Technote 1125

Building a 3D application that calls RAVE


ñ⁄éü

3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃê›åv

RAVE Ç™ä˙ë“Ç∑ÇÈLJÇÃÇÕ

3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃç\íz

3D ÉåÉìÉ_ÉäÉìÉOÉpÉCÉvÉâÉCÉì

ì_ÇÃìäâe

êçë‰Ç…çáÇÌÇπÇΩÉNÉäÉbÉsÉìÉO

ÉNÉäÉbÉsÉìÉOÇ…égǧêçë‰

ÉNÉäÉbÉsÉìÉOÇÃÉIÉvÉeÉBÉ}ÉCÉY

ÉeÉNÉXÉ`ÉÉä«óù

RAVE ÇÃÉpÉtÉHÅ[É}ÉìÉXÉ`ÉÖÅ[ÉjÉìÉO

éQçlï∂å£

DZÇà TECHNOTE ÇÕ RAVE ÇópǢǃÉâÉXÉ^ÉâÉCÉYÇ‚âAñ è¡ãéÇçsǧ 3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇç\ízÇ∑ÇÈï˚ñ@Çê‡ñæÇµÇ‹Ç∑ÅBÉeÉNÉXÉ`ÉÉä«óùÅAÉNÉäÉbÉsÉìÉOÅAí ímÉÅÉ\ÉbÉhÅAǪÇÃëºÅADrawSprocket ÇΔÇÃìùçáǻǫ RAVE Ç…ä÷Ç∑ÇÈàÍî ìIÇ»éñïøÇéÊÇËè„Ç∞Ç‹Ç∑ÅBëSëÃÇí ÇµÇƒÅAê´î\å¸è„ÇëÊàÍÇÃñ⁄ïWÇΔçlǶǃê‡ñæÇµÇ‹Ç∑ÅBDZÇà TECHNOTE ÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÉvÉçÉOÉâÉ}DžLJÅARAVE ÉGÉìÉWÉìÇÃê›åvé“DžLJñÇ…óßǬÇÕÇ∏Ç≈Ç∑ÅB


3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃê›åv

çÇÇ¢ÉpÉtÉHÅ[É}ÉìÉXÇî≠äˆÇ∑ÇÈ3DÉAÉvÉäÉPÅ[ÉVÉáÉìÇê›åvÇ∑ÇÈÇ…ÇÕÅAëΩÇ≠ÇÃçÏãΔÇ™ïKóvÇ≈Ç∑ÅBçLÇ¢world-spacesÇΔëÂó ÇÃÉ|ÉäÉSÉìÇópÇ¢ÇÈÇÃÇÕLJÇÕÇ‚ó·äOÇ≈Ç»Ç≠èÌéØÇΔǻǡǃǢNjÇ∑ÅBê¨å˜Ç∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÕà»â∫ÇÃólÇ»ÅAÇ¢Ç≠ǬǩÇÃàŸÇ»Ç¡ÇΩéÌófiÇÃèàóùÇ™ïKóvÇΔÇ»ÇËÇ‹Ç∑ÅB

  1. â¬éã/ïsâ¬éãÇÃîªíf(Visibility determination) -- éwíËÇ≥ÇÍÇΩåªç›ÇÃÉJÉÅÉâÇÃà íuÇ©ÇÁÅAÇ«ÇÃÉ|ÉäÉSÉìÇ™å©Ç¶ÇÈÇ©ÇÃîªífÅBÉIÉuÉWÉFÉNÉgÇÃviewing frustumÇ©ÇÁäOÇÍÇΩïîï™Ç‚ëºÇÃÉ|ÉäÉSÉìÇ…âBÇÍÇΩïîï™ÇÕÅAå¯ó¶ìIÇ…ÉNÉäÉbÉsÉìÉOÇ≥ÇÍÇÈÇ◊Ç´Ç≈Ç∑ÅB
  2. ÉfÉBÉeÅ[ÉãÇÃÉåÉxÉã -- âìÇ≠DždžÇÈÉIÉuÉWÉFÉNÉgÇÕÅAãflÇ≠ÇÃLJÇÃÇÊÇËè≠ǻǢÉ|ÉäÉSÉìÇ≈ç\ê¨Ç≥ÇÍÇÈÇ◊Ç´Ç≈Ç∑ÅB
  3. âBñ èúãé(Hidden Surface Removal) -- É|ÉäÉRÉìÇÃï`é ÇÕÅAǪÇÃê[ìxèá(depth ordering)Ç™ï€èÿÇ≥ÇÍÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
  4. ÉâÉXÉ^âª(Rasterization) -- ǢǩDžç≈èIìIÇ…ìæÇÁÇÍÇΩÉ|ÉäÉSÉìÇÃÉäÉXÉgÇçÇë¨Ç…ï`é Ç∑ÇÈÇ©ÅAÇ‹ÇΩÉsÉNÉZÉãÇÃçƒï`âÊÇç≈è¨ÇΔÇ∑ÇÈÇ©

ÉnÅ[ÉhÉEÉFÉAÅEÉAÉEÉZÉâÉåÅ[ÉVÉáÉìÇÕ3DÉAÉvÉäÉPÅ[ÉVÉáÉìçÏê¨ÇÃÉãÅ[ÉãÇïœÇ¶Ç‹ÇµÇΩÅBÉâÉXÉ^âªÇÕí èÌÉnÅ[ÉhÉEÉFÉAÇ…ÇÊǡǃé¿çsÇ≥ÇÍÅAëºÇÃèàóùÇΔÇÕîÒìØä˙Ç…çsÇÌÇÍÇ‹Ç∑ÅBÉnÅ[ÉhÉEÉFÉAÇ…ÇÊÇÈz-bufferingÇÕÅAâBñ èúãéèàóùÇÉ\ÉtÉgÉEÉFÉAÇ…ÇÊÇÈèàóùÇÊÇËçÇë¨Ç…çsǧÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅBÉfÉxÉçÉbÉpÇÕ3DÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃê›åvéûÇ…ÅAâ¬éã/ïsâ¬éãÇÃîªífÇΔÉfÉBÉeÅ[ÉãÇÃÉåÉxÉãí≤êÆÇ…è≈ì_ÇçiÇÈDZÇΔÇ…ÇÊÇËÅA3DÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉAÉhÉoÉìÉeÅ[ÉWÇãùéÛÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBà»â∫ÇÕÉnÅ[ÉhÉEÉFÉAÅEÉxÅ[ÉXÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇç\ízÇ∑ÇÈèÍçáÇÃÉTÉWÉFÉXÉ`ÉáÉìÇ≈Ç∑ÅB

3DÉAÉNÉZÉâÉåÅ[É^ÇÕîÒèÌÇ…å¯ó¶ÇÃó«Ç¢pixel pipelineÇ≈Ç∑Ç™ÅAÉ|ÉäÉSÉìÅEÉXÉLÉÉÉìÉâÉCÉìÅEå¬ÅXÇÃÉsÉNÉZÉãñàÇ…åàÇ‹ÇÈÉIÅ[ÉoÅ[ÉwÉbÉhǙdžÇËÇ‹Ç∑ÅBëΩÇ≠ÇÃèÍçáÅAdžÇÈéÌÇà filtering modeÇ≈ÇÃï`âÊÇÕÉIÅ[ÉoÅ[ÉwÉbÉhÇà¯Ç´ãNDZǵNjÇ∑ÅBó·Ç¶ÇŒÅAtrilinear filteringÇÕpoint samplingÇÃ8î{ÇÃtexelÇÃà¯Ç´èoǵèàóùÇïKóvÇΔǵNjÇ∑ÅBPCIÉoÉXÇ…ÇÊÇÈÉ|ÉäÉSÉìÅEÉfÅ[É^ÇÃì]ëóÇ…ÇÊÇÈÉIÅ[ÉoÅ[ÉwÉbÉhÇ…â¡Ç¶ÇƒÅAèâä˙ÇÃÉAÉNÉZÉâÉåÅ[É^Ç≈ÇÕÉ\ÉtÉgÉEÉFÉAÇ…ÇÊÇÈÇRäpÉ|ÉäÉSÉìÇÃèÄîıèàóùÇ™ñcëÂÇ…Ç»ÇËÅAÉ|ÉäÉSÉìdžÇΩÇËÇÃèÄîıéûä‘Ç™âΩÉTÉCÉNÉãLJëùǶǃǵNjǢNjÇ∑ÅB

è¨Ç≥Ç»É|ÉäÉSÉìÇÃÉåÉìÉ_ÉäÉìÉOéûä‘ÇÃëçåvÇÕÅAÉ\ÉtÉgÉEÉFÉAÇÃǛDžÇÊÇÈÉåÉìÉ_ÉäÉìÉOÇ…ïKóvÇ»éûä‘ÇÊÇËëΩÇ≠Ç»ÇËÇ‹Ç∑ÅBè≠Ç»Ç≠ÇΔLJ1é–ÇÃÉfÉxÉçÉbÉpÇ™ÅAîfiìôÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÊǡǃÉåÉìÉ_ÉäÉìÉOÇ≥ÇÍÇΩÉ|ÉäÉSÉìÇÃëΩÇ≠ÇÕ4ÉsÉNÉZÉãǩǪÇÍÇÊÇËè¨Ç≥ǻLJÇÃÇæÇΔïÒçêǵǃǢNjÇ∑ÅBDZÇÃèÍçáÅAí·ÉåÉxÉãÇÃÉfÉBÉeÅ[ÉãÇÃÉÇÉfÉãÇçÏÇÍÇŒÅAÉnÅ[ÉhÉEÉFÉAÇ…ëóÇÁÇÍÇÈÉ|ÉäÉìÉSÉìÇÃêîÇå∏ÇÁǵÅAÉCÉÅÅ[ÉWÇÃïiéøÇ…ä÷Ç∑ÇÈëŒâøÇè¨Ç≥Ç≠ǵNjÇ∑ÅB

â¬éã/ïsâ¬éãÇÃîªíf(Visibility determination)

ëÂÇ´Ç»ÉèÅ[ÉãÉhÇçÏê¨Ç∑ÇÈéûÇ…ÅAÉ|ÉäÉSÉìÇÃǩǻÇËÇÃïîï™ÇÕÉJÉÅÉâà íuÇ©ÇÁÇÕå©Ç¶Ç»Ç¢Ç≈ǵÇÂǧÅBÇ¢Ç≠ǬǩÇÕéãñÏ(viewing frustum)Ç©ÇÁäÆëSÇ…ÇÕÇ∏ÇÍǃǢNjÇ∑ÅBécÇËÇÃå©Ç¶Ç»Ç¢ïîï™ÇÕÅAëºÇÃÉ|ÉäÉSÉìÇ…âBÇÍǃǢNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕíPèÉÇ…Ç«ÇÒÇ«ÇÒÉfÅ[É^ÇÉnÅ[ÉhÉEÉFÉAÇ…ëóÇËçûÇfiÇÃÇ≈ÇÕÇ»Ç≠ÅAå¯ó¶ó«Ç≠É|ÉäÉSÉìÇ™ëIëÇ≥ÇÍÇÈólÉfÅ[É^Çä«óùǵÅAè\ï™ëÅÇ≠ï`âÊÇ≥ÇÍÇÈÇÊǧèúäOǵNjǵÇÂǧÅBÇ≥ÇÁÇ…ÅAäeÉ|ÉäÉSÉìÇǪÇÍǺÇÍÇ…ï`âÊÇ∑ÇÈDZÇΔÇÕÅAÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇà¯Ç´ãNDZǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇÃîpä¸ÇÕå∞íòÇ»ÉpÉtÉHÅ[É}ÉìÉXÇÃí·â∫ÇèµÇ´Ç‹Ç∑ÅiDZÇÃè⁄ç◊ÇÕå„èqǵNjÇ∑ÅjÅBǩǬǃÉfÉxÉçÉbÉpÇ™égǡǃǴÇΩéËñ@Ç™2ǬdžÇËÇ‹Ç∑ÅBè⁄ç◊ÇÕêGÇÍÇ‹ÇπÇÒÇ™ÅAÇ«ÇøÇÁLJéQçlï∂å£ÇÃǻǩÇ≈àµÇÌÇÍǃǢNjÇ∑ÅB

Quakeñ@ÇÕBSPÉcÉäÅ[Çégǡǃç¿ïWèÓïÒÇä«óùǵNjÇ∑ÅBBSPÉcÉäÅ[ÇÃàÍǬÇÃóòì_ÇÕÅAéãñÏÇ…ì¸ÇÈǩǫǧǩÇÃàÍìxÇÃîªífÇ≈ǪÇÍà»â∫ÇÃÉTÉuÉcÉäÅ[ÇèúäOÇ≈Ç´ÅAëΩÇ≠ÇÃÉ|ÉäÉSÉìÇå¯ó¶ó«Ç≠èúäOÇ≈Ç´ÇÈéñÇ≈Ç∑ÅBÇ≥ÇÁÇ…ÅAQuakeÇÕÉcÉäÅ[ÇÃäeótÇÃâ¬éãÉ|ÉäÉSÉìÇÃÉãÅ[ÉYÇ»èWçáÇ…ëŒÇµÇƒéñëOÇÃåvéZÇçsǢNjÇ∑ÅBÉtÉåÅ[ÉÄÇÉåÉìÉ_ÉäÉìÉOÇ∑ÇÈéûÇ…ÅAQuakeÇ≈ÇÕåªç›ÇÃótÇÃPVSÇ…ä‹Ç‹ÇÍÇÈÉ|ÉäÉSÉìǵǩçló∂ǵNjÇπÇÒÇÃÇ≈ÅAí≤ç∏ǵǻÇ≠ǃÇÕÇ»ÇÁǻǢÉ|ÉäÉSÉìÇÃêîÇÉhÉâÉXÉeÉBÉbÉNÇ…å∏ÇÁÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

Portalsñ@ÇÕÅAå¯ó¶ó«Ç≠É|ÉäÉSÉìÇèúãéÇ∑ÇÈLJǧàÍǬÇÃï˚ñ@Ç≈Ç∑ÅBàÍǬÇÃèoì¸ÇËå˚ǵǩǻǢï¬Ç¥Ç≥ÇÍÇΩïsìßñæÇ»ïîâÆÇÃíÜÇ©ÇÁÇÕÅAèoì¸ÇËå˚ÇÃå¸Ç±Ç§Ç™ÇÌDždžÇÈÉ|ÉäÉSÉìǵǩå©Ç¶Ç»Ç¢Ç≈ǵÇÂǧÅBèoì¸ÇËå˚ÇÕÅAéüÇÃïîâÆÇ÷ÇÃå∫ä÷(portal)ÇΔÇ»ÇËÇ‹Ç∑ÅBPortalÇégǡǃÉåÉìÉ_ÉäÉìÉOÇ∑ÇÈÇ…ÇÕÅAïîâÆÇÃíÜÇÃëSǃÇÃÉ|ÉäÉSÉìÇï`âÊǵÅAåªç›ÇÃéãñÏ(viewing frustum)Ç©ÇÁå©Ç¶ÇÈportalÇîªífǵÅAÉäÉJÅ[ÉVÉuÇ…portalÇ…ÇÊǡǃã∑ÇflÇÁÇÍÇΩéãñÏÇégǡǃéüÇÃïîâÆÇï`âÊǵǃǢǴNjÇ∑ÅB

Clipping

Ç¢Ç≠ǬǩÇÃÉnÅ[ÉhÉEÉFÉAÇÕÉåÉìÉ_ÉäÉìÉOÇ≥ÇÍÇΩëSǃÇÃÉsÉNÉZÉãÇ…é©ìÆìIÇ…ÉNÉäÉbÉsÉìÉOÇé{ǵNjÇ∑ÅBDZÇÍÇÕOpenGLÇÃ"scissor clip"ÇΔǵǃímÇÁÇÍǃǢNjÇ∑ÅBñcëÂÇ»éOäpÇ™ÉeÉXÉgÇ∑Ç◊Ç´äÙêÁÇÃÉsÉNÉZÉãÇê∂Ç∂Ç≥ÇπÅAÉnÅ[ÉhÉEÉFÉAÇ…ÇÊǡǃîjä¸Ç≥ÇÍÇ‹Ç∑ÅBÇÊÇËÇÊÇ¢âñ@ÇÕÅAÉ\ÉtÉgÉEÉFÉAÇ…ÇÊǡǃalgorithmicallyÇ…É|ÉäÉSÉìÇÉNÉäÉbÉvÇ∑ÇÈéñÇ≈Ç∑ÅBRAVEÇÕÉGÉìÉWÉìÇ™ÉNÉäÉbÉsÉìÉOÇçsÇÌǻǢÇΔîªífÇ∑ÇÈÇÃÇ≈ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈RAVEÇ…ìnÇ∑ëOÇ…ëSǃÇÃÉ|ÉäÉSÉìÇ…ëŒÇµÇƒéñëOÇÃÉNÉäÉbÉsÉìÉOÇé{Ç∑ïKóvǙdžÇËÇ‹Ç∑ÅB

Z-Buffering

ÉnÅ[ÉhÉEÉFÉAÇ…ÇÊÇÈZ-BufferingÇÕÅAâBñ èúãéÇ…îÒèÌÇ…ñÇ…óßÇøÇ‹Ç∑Ç™ÅAàÍî ìIÇ…é¿ç€Ç…ÉåÉìÉ_ÉäÉìÉOÇ∑ÇÈÉoÉbÉtÉ@ÇÊÇËëΩÇ≠ÇÃÉÅÉÇÉäÇïKóvÇΔǵNjÇ∑ÅB2MbyteÇÃ2D/3DÉJÅ[ÉhÇ≈ÇÕÅA640x480ÇÃÉtÉçÉìÉgÅEÉoÉbÉNÅEz-bufferÇégǧÇΔÅAÉeÉLÉXÉ`ÉÉÇ…ÇÕ1/4Mbyteà»â∫ÇÃVRAMǵǩécÇËÇ‹ÇπÇÒÅB2MbyteÇÃÉJÅ[ÉhÇ≈é¿çsÇ∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕÅAÉeÉNÉXÉ`ÉÉÇ…è\ï™Ç»VRAMÇó^ǶÇÈÇΩÇflÇ…ÅAÉ\ÉtÉgÉEÉFÉAÇ…ÇÊÇÈHSRÉAÉãÉSÉäÉYÉÄÇÃì±ì¸Ççló∂Ç∑ÇÈïKóvǙdžÇÈÇ≈ǵÇÂǧÅB

àÍïîÇÃÉnÅ[ÉhÉEÉFÉAÇÕÅAz-bufferingèàóùÇÇÊÇËå¯ó¶ìIÇ…çsǢNjÇ∑ÅBÉVÅ[ÉìÇÃàÍïîÇÃÉ|ÉäÉSÉìÇ™Ç∑Ç≈Ç…(BSPÉcÉäÅ[ÇÃólÇ…)É\Å[ÉgÇ≥ÇÍǃǢÇÈèÍçáÅAǪÇÃÉ|ÉäÉSÉìÇÃèáèòÇÉnÅ[ÉhÉEÉFÉAÇ…ëóÇÍÇŒÅAÉpÉtÉHÅ[É}ÉìÉXÇå¸è„Ç≥ÇπÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBó·Ç¶ÇŒÅAǪÇÃÉnÅ[ÉhÉEÉFÉAÇ≈"z write"ÇÃï˚Ç™"z test"ÇÊÇËëÅÇ¢èÍçáÅA"z test"ÇÉIÉtDžǵǃÉ\Å[ÉgǵÇΩÉ|ÉäÉSÉìÇâúÇ©ÇÁëOÇ…èáî‘Ç…ï`âÊǵNjÇ∑ÅBãtÇ…"z test"ÇÃï˚Ç™"z write"ÇÊÇËëÅÇ¢èÍçáÇÕÅAtestÇÉIÉìDžǵǃëOÇ©ÇÁâúÇ…ï`âÊǵNjÇ∑ÅBRAVEÇÕDZÇÃólÇ»ï˚ñ@Çå©Ç¬ÇØÇÈÇΩÇflÇÃAPIÇíÒãüǵNjÇπÇÒÇÃÇ≈ÅAólÅXÇ»ÉnÅ[ÉhÉEÉFÉAÇ≈džǻÇΩÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÉeÉXÉgÇ∑ÇÈDZÇΔÇ™ÅADZÇÃÇÊǧǻì¡ê´Çî≠å©Ç∑ÇÈéËèïÇØÇΔÇ»ÇÈÇ≈ǵÇÂǧÅB

Å@

RAVE Ç™ä˙ë“Ç∑ÇÈLJÇÃÇÕ

RAVE ÇÕÉnÅ[ÉhÉEÉFÉAÇ…îÌÇπÇΩîÒèÌÇ…îñÇ¢ëwÇ≈Ç∑ÅBRAVE ÉãÅ[É`ÉìÇÃåƒÇ—èoǵÇÕÇΩǢǃǢÇÃèÍçá RAVE ÉhÉâÉCÉoÇíºê⁄åƒÇ—èoÇ∑ÇÃÇΔïœÇÌÇËÇ‹ÇπÇÒÅBRAVE é©ëÃÇ…ÇÕÉIÅ[ÉoÅ[ÉwÉbÉhÇÕdžÇËÇ‹ÇπÇÒÅB

ÉfÉtÉHÉãÉgÇ≈ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ QARenderStart ÇåƒÇ—èoǵǃÉtÉåÅ[ÉÄÇäJénÇ∑ÇÈÇΔÅAÉGÉìÉWÉìÇÕ RAVE ÉRÉìÉeÉLÉXÉgÇ≈éwíËÇ≥ÇÍÇΩêFÇ≈ÉoÉbÉNÉoÉbÉtÉ@Çèâä˙âªÇµÅAZ ÉoÉbÉtÉ@Çãóó£ 1.0 Ç…ê›íËǵNjÇ∑ÅBë±Ç¢ÇƒÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉGÉìÉWÉìÇ…É|ÉäÉSÉìÇëóèoǵNjÇ∑ÅBÉ|ÉäÉSÉìÇÕdžÇÁÇ©Ç∂Çflï\é¶â¬î\óÃàÊÇ≈ÉNÉäÉbÉvÇ≥ÇÍÇƒÇ¢Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ QARenderEnd ÇåƒÇ—èoÇ∑ÇΔÅAé¿çsë“ÇøÇÃÉRÉ}ÉìÉhÇÕÇ∑Ç◊ǃÉnÅ[ÉhÉEÉFÉAÇ…ìfÇ´èoÇ≥ÇÍÅAÉnÅ[ÉhÉEÉFÉAÇÕîÒìØä˙Ç…ÉtÉåÅ[ÉÄÇÉtÉçÉìÉgÉoÉbÉtÉ@Ç…ÉRÉsÅ[ǵNjÇ∑ÅBRAVE ÇÃèâä˙ÇÃÉoÅ[ÉWÉáÉì (Ç®ÇÊÇ—èâä˙ÇÃÉGÉìÉWÉìÇÃëΩÇ≠) ÇÕ QARenderEnd ÇÃíÜÇ≈ìØä˙ÇéÊÇËÅAÉnÅ[ÉhÉEÉFÉAÇÃèàóùÇÃèIóπÇë“ÇøÇ‹Ç∑ÅB

RAVE ÉGÉìÉWÉìǙǫÇÒÇ»ílÇä˙ë“ǵǃǢÇÈÇÃÇ©ÇímÇÈÇΔï÷óòÇ≈Ç∑ÅBDZÇÃÇΩÇflÅAÉeÉNÉXÉ`ÉÉÇÃí∏ì_ÇÃç\ë¢ëà (TQAVTexture) Ç…ï€ë∂Ç≥ÇÍÇÈìTå^ìIÇ»ílÇå©ÇƒÇ›Ç‹ÇµÇÂǧÅBÉOÅ[ÉçÅ[ÉVÉFÅ[ÉfÉBÉìÉO (gouraud-shading) Ç≥ÇÍÇΩÉ|ÉäÉSÉìLJǟÇ⁄ìØólÇ≈Ç∑ÅB

x ÇΔ y ÇÕâÊñ ÇÃç¿ïWÇï\Ç∑ïÇìÆè¨êîì_ílÇ≈Ç∑ÅB640x480 ÉRÉìÉeÉLÉXÉgÇ≈ÇÕÅAǪÇÍǺÇÍílÇÃîÕàÕÇÕÅA0 <= x < 640ÅA0 <= y < 480 Ç…Ç»ÇËÇ‹Ç∑ÅBâ∫ÇΔâEÇÃã´äEì_ÇÕä‹Ç‹ÇÍǻǢDZÇΔÇ…íçà”ǵǃÇ≠ÇæÇ≥Ç¢ÅBRAVE ÇÃÉfÉoÉbÉOÉoÅ[ÉWÉáÉìÇÕÉoÉEÉìÉfÉBÉìÉOÉ{ÉbÉNÉXÇÃäOë§Ç÷ÇÃï`âÊÇåüímǵNjÇ∑ÅB

z ÇÃílÇÕ 0 Ç©ÇÁ 1 Ç≈Ç∑ÅBçç°Çà 3D ÉnÅ[ÉhÉEÉFÉAÇ™ÉTÉ|Å[ÉgÇ∑ÇÈ Z ÉoÉbÉtÉ@ÇÕÇŸÇΔÇÒÇ« 16 ÉrÉbÉgÇ≈Ç∑ÅBǵÇΩǙǡǃÅAZ ÉoÉbÉtÉ@ÇÃílàÊÇÕç≈ëÂå¿ÅAégÇ¢ÇΩÇ¢ÇÕÇ∏Ç≈Ç∑ÅBÉqÉUÅ[ïΩñ  (hither plane) ÇÕ 0 ÇÃà íuÇ…íuÇ©Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBZ ÉoÉbÉtÉ@ÇÕç≈èâ 1.0 Ç…èâä˙âªÇ≥ÇÍÇÈÇÃÇ≈ÅAÉàÉìïΩñ  (yon plane) ÇÇ´Ç¡ÇøÇË 1.0 ÇÃà íuÇ…íuÇ≠ÇΔÅAǪÇÃïΩñ è„Ç‹ÇΩÇÕǪÇÃãflÇ≠ÇÃÉsÉNÉZÉãÇÕï`âÊÇ≥ÇÍÇ‹ÇπÇÒÅBǪÇÃÇΩÇflÅAéãì_êçë‰ì‡ÇÃÇ∑Ç◊ǃÇÃì_Çï\é¶Ç∑ÇÈÇ…ÇΩÇflÇ…è\ï™Ç»ÅAç≈LJãflÇ¢à íuÇ…ÉàÉìïΩñ Çà⁄ìÆÇ≥ÇπÇÈÇΔÇÊÇ¢Ç≈ǵÇÂǧÅBÉGÉìÉWÉìÇ…ÇÕÅADZÇÃílÇåvéZÇ∑ÇÈÇΩÇflÇà 2 ǬÇÃÉ^ÉOïœêî (kQATag_ZMinScale Ç®ÇÊÇ— kQATag_ZMinOffset) Ç™ópà”Ç≥ÇÍǃǢNjÇ∑ÅB

invW ÇÃílÇÕ 1/w Ç≈Ç∑ÅBw ÇÕâìãflñ@ (perspective viewing) Ç≈égópÇ≥ÇÍÇÈï‚ê≥àˆéq (correction factor) Ç≈Ç∑ÅBRAVE Ç≈ÇÕí èÌ invW ÇÕ 1/z Ç…íPèÉâªÇ≈Ç´Ç‹Ç∑ÅBǵǩǵÅAÉqÉUÅ[ïΩñ Ç z=0 Ç…íuÇ≠ÇΔǪǧÇÕÇ≈Ç´Ç‹ÇπÇÒÅBÉqÉUÅ[ïΩñ Ç™ 0 ÇÊÇËè≠ǵëÂÇ´Ç¢à íuDždžÇÍÇŒÅAZ ÉoÉbÉtÉ@ÇÃílàÊÇÇÌÇ∏ǩDžé∏Ç§ÇæÇØÇ≈ 1/z Ç™égópÇ≈Ç´ÇÈÇΩÇflÅAâΩLJñ‚ëËÇÕdžÇËÇ‹ÇπÇÒÅBÇ≈Ç»ÇØÇÍÇŒÅAZ ílÇ 0 ÇΔ 1 ÇÃä‘Ç…í≤êÆÇ∑ÇÈëOÇ… invW ÇåvéZÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
âìãflñ@ï‚ê≥çœÇ›ÇÃÉeÉNÉXÉ`ÉÉÉ}ÉbÉsÉìÉOÇçsǧÇΩÇflÇ…ÇÕÅAÉeÉNÉXÉ`ÉÉç¿ïW U Ç®ÇÊÇ— V Ç… invW Çä|ÇØÇÈïKóvǙdžÇËÇ‹Ç∑ÅB(u,v) ç¿ïWÇÕ (0,0) Ç™ÉeÉNÉXÉ`ÉÉÉ}ÉbÉvÇÃç∂â∫äpÇ…Ç»ÇËÇ‹Ç∑ÅB

DZÇÃëºÅAì¡éÍÇ»ÉeÉNÉXÉ`ÉÉÉäÉìÉOÉÇÅ[ÉhÇïKóvÇΔÇ∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÉJÉâÅ[ílÇê›íËÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉAÉbÉvÉãÇà 3D ÉAÉNÉZÉâÉåÅ[É^ÇÕèÌDžDZÇÃÇÊǧǻÉÇÅ[ÉhÇé¿çsÇ∑ÇÈÇÃÇ≈ (ã÷é~ÇÕÇ≈Ç´Ç‹ÇπÇÒ)ÅAÉAÉbÉvÉãÇÃÉnÅ[ÉhÉEÉFÉAÇ…ï`âÊÇ∑ÇÈèÍçáÇÕïKÇ∏ÉÇÉWÉÖÉåÅ[ÉVÉáÉìílÇΔÉnÉCÉâÉCÉgílÇê›íËǵǃÇ≠ÇæÇ≥Ç¢ÅB

ÉeÉNÉXÉ`ÉÉÉÇÉWÉÖÉåÅ[ÉVÉáÉìÇÕÉâÉCÉeÉBÉìÉOå¯â ÇèoÇ∑ÇÃÇ…ï÷óòÇ≈Ç∑ÅBì]é å¯â  (decal effects) ÇÕÉtÉHÉMÉìÉOÇÉVÉ~ÉÖÉåÅ[ÉgÇ≈Ç´ÅAZ ç¿ïWÇ…äÓÇ√ǢǃÉAÉãÉtÉ@ílÇëIÇ—ÅAÉeÉNÉXÉ`ÉÉÇΔÉâÉCÉeÉBÉìÉOílÇÉuÉåÉìÉhǵNjÇ∑ÅBÉnÅ[ÉhÉEÉFÉAÇ…ÇÊÇÈÉtÉHÉMÉìÉOÇ™àÍî ìIDžǻǡǃǢNjÇ∑ÅBRAVE ÇÃè´óàÇÃÉoÅ[ÉWÉáÉìÇ≈ÇÕíºê⁄ÉTÉ|Å[ÉgÇ∑ÇÈó\íËÇ≈Ç∑ÅB

ä˘ë∂Çà 3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ RAVE ÇåƒÇ—èoÇ∑ÇÊǧDžïœçXÇ∑ÇÈÇ…ÇÕDZÇÍÇ‹Ç≈ÇÃèÓïÒÇ≈è\ï™Ç≈ǵÇÂǧÅBÇ∑Ç≈DžDZǧǵÇΩïœçXÇçsÇ¡ÇΩÉQÅ[ÉÄÉfÉxÉçÉbÉpÇÃëΩÇ≠ÇÕÅAÉOÅ[ÉçÅ[ÉVÉFÅ[ÉfÉBÉìÉOÇé{Ç∑éOäpå`DžǬǢǃÇÕàÍéûä‘LJdžÇÍÇŒè\ï™Ç≈ǵÇΩÅBÉeÉNÉXÉ`ÉÉÇé{Ç∑éOäpå`ÇÃèÍçáÇÕÅAÉeÉNÉXÉ`ÉÉä«óùÇ™î∫ǧÇΩÇflÅALJǡÇΔéûä‘ǙǩǩÇËÇ‹Ç∑ÅB

RAVE Ç÷ÇÃïœä∑çÏãΔÇë¨ÇflÇÈ 1 ǬÇÃï˚ñ@ÇÕÅAÉÇÉjÉ^ÇLJǧ 1 ë‰ÇΔ 3D ÉAÉNÉZÉâÉåÅ[É^ÉrÉfÉIÉJÅ[ÉhÇí«â¡Ç∑ÇÈDZÇΔÇ≈Ç∑ÅBÇÕÇ∂ÇflÇÕÉ\ÉtÉgÉEÉFÉAÇ…ÇÊÇÈÉåÉìÉ_ÉäÉìÉOïîï™ÇÕǪÇÃNjNjDžǵǃǮǴÅARAVE ÉÇÉjÉ^Ç…ëŒÇµÇƒÇ‡ìØÇ∂åƒÇ—èoǵÇçsǧÇÊǧDžǵNjÇ∑ÅBDZǧÇ∑ÇÈÇΔÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉ\ÉtÉgÉEÉFÉAÇÃÉåÉìÉ_ÉäÉìÉOÇΔÉnÅ[ÉhÉEÉFÉAÇÃÉåÉìÉ_ÉäÉìÉOÇî‰ärÇ≈Ç´ÇÈÇΔǢǧÉÅÉäÉbÉgLJê∂Ç‹ÇÍÇ‹Ç∑ÅB

ç≈èIìIÇ…ÇÕÅAÉ\ÉtÉgÉEÉFÉAÉâÉXÉ^ÉâÉCÉUÇ÷ÇÃåƒÇ—èoǵÇΔ RAVE Ç÷ÇÃåƒÇ—èoǵÇêÿÇËë÷ǶÇÁÇÍÇÈÇÊǧDžǵNjÇ∑ÅBRAVE ÇÕǩǻÇËîñÇ¢ API Ç≈Ç∑ÅBÇ≈Ç∑Ç©ÇÁÅAéËéùÇøÇÃÉ\ÉtÉgÉEÉFÉAÉâÉXÉ^ÉâÉCÉUÇ RAVE ÉGÉìÉWÉìÇΔǵǃçÏÇËíºÇµÇƒÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃãNìÆéûÇ… RAVE ÉGÉìÉWÉìÇΔǵǃìoò^Ç∑ÇÈÅAÇΔǢǧëŒâûLJâ¬î\Ç≈Ç∑ÅBÉnÅ[ÉhÉEÉFÉAǙǻǢèÍçáÇÕdžǻÇΩÇÃçÏê¨ÇµÇΩÉGÉìÉWÉìÇ≈ÉAÉbÉvÉãÇÃÉ\ÉtÉgÉEÉFÉAÉGÉìÉWÉìÇíuÇ´ä∑ǶÇÈÇÌÇØÇ≈Ç∑ÅBÉAÉbÉvÉãÇÃÉ\ÉtÉgÉEÉFÉAÉGÉìÉWÉìÇÕçÇïiéøÇÃï`âÊÇçsǢNjÇ∑Ç™ÅAÉQÅ[ÉÄÇ≈ê´î\Ç™èoÇÈÇÊǧDžÇÕÉIÉvÉeÉBÉ}ÉCÉYÇ≥ÇÍǃǢNjÇπÇÒÅB

3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃç\íz

DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅA3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇèëÇ¢ÇΩDZÇΔÇÃǻǢï˚ÇÃÇΩÇflÇ…ÅAïKóvÇΔÇ»ÇÈÇ¢Ç≠ǬǩÇÃäTîOÇΔêîéÆÇè–âÓǵNjÇ∑ÅBDZÇÃÉeÅ[É}DžǬǢǃÇÕÇΩÇ≠Ç≥ÇÒÇÃñ{Ç™èëÇ©ÇÍǃǢNjÇ∑ÅBDZÇÃÇ§ÇøÇ¢Ç≠ǬǩÇÕÅARAVE ÇÃÉhÉLÉÖÉÅÉìÉgÇÃíÜÇΔÅADZÇà TECHNOTE ÇÃç≈å„ÇÃéQçlï∂å£Ç≈è–âÓÇ≥ÇÍǃǢNjÇ∑ÅB

Ç«ÇÒǻLJÇÃÇ≈LJï`âÊÇÕÉJÉÅÉâÇΔï\é¶ïΩñ  (viewing plane) ÇäÓèÄÇ…çsÇÌÇÍÇ‹Ç∑ÅBÉJÉÅÉâÇÕ 3D ÉèÅ[ÉãÉhì‡Ç≈džÇÈà íu (position) ÇΔå¸Ç´ (orientation) ÇéùǡǃǢNjÇ∑ÅBï\é¶ïΩñ ÇÕï\é¶óÃàÊ (viewed area) ì‡ÇÃâÊñ ÇÃà íuÇé¶ÇµÇ‹Ç∑ÅBÉNÉäÉbÉsÉìÉOÇ…égǧêçë‰Åiviewing frustumÅjÇÕï\é¶ïΩñ ÇÃé¸ÇËÇ…å`ê¨Ç≥ÇÍÇ‹Ç∑ÅBï`âÊëŒè€ÇÃÇ∑Ç◊ǃÇÃÉIÉuÉWÉFÉNÉgǙDZÇÃêçë‰Ç…ǵÇΩǙǡǃÉNÉäÉbÉvÇ≥ÇÍÇ‹Ç∑ÅB


DZÇÍÇ©ÇÁç¿ïWånÇΔé·ä±ÇÃíËã`ÇçsÇ¢ÅAìTå^ìIÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÇΩÇ«ÇÈÉåÉìÉ_ÉäÉìÉOÇÃÉpÉCÉvÉâÉCÉìÇè–âÓǵNjÇ∑ÅBDZDZÇ≈ÇÕÅAâAñ è¡ãé (HSR = hidden surface removal) Ç‚ÉIÉuÉWÉFÉNÉgÇÃä‘à¯Ç´ (object culling) ǻǫÅAï°éGÇ»å`éÆÇÕéÊÇËè„Ç∞Ç‹ÇπÇÒÅBǪÇÍÇê‡ñæÇ∑ÇÈÇΔ 1 ç˚ÇÃñ{DžǻǡǃǵNjǧǩÇÁÇ≈Ç∑ÅB

â‰ÅXÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕç∂éËÇäÓèÄDžǵÇΩç¿ïWånÇópǢNjÇ∑ÅBx ÇÕç∂Ç©ÇÁâEÇ÷ÅAy ÇÕâ∫Ç©ÇÁè„Ç÷ÅAz ÇÕâÊñ ÇÃâúÇ…å¸Ç©Ç¡ÇƒëÂÇ´Ç≠Ç»ÇËÇ‹Ç∑ÅB

ÉçÅ[ÉJÉãç¿ïW

ÉçÅ[ÉJÉãç¿ïWÇÕÅAÉÇÉfÉãÇÃïœä∑ (transform) ëOÇÃç¿ïWÇ≈Ç∑ÅBÉÇÉfÉãÇÕå¥ì_ÇíÜêSÇ… Z é≤ÇÃå¸Ç´Ç…îzíuǵNjÇ∑ÅB

ÉIÉuÉWÉFÉNÉgÇÕǪÇÍǺÇÍå≈óLÇÃà íuÇΔå¸Ç´ÇéùÇøÇ‹Ç∑ÅBǪÇÍÇå≥Ç…ÉçÅ[ÉJÉãç¿ïWÇ©ÇÁÉèÅ[ÉãÉhç¿ïWÇ…ïœä∑ǵNjÇ∑ÅB

ÉèÅ[ÉãÉhç¿ïW

ÉèÅ[ÉãÉhç¿ïWÇÕÅAÇ∑Ç◊ǃÇÃÉIÉuÉWÉFÉNÉgÇîzíuÇ∑ÇÈïWèÄÇÃç¿ïWånÇ≈Ç∑ÅBDZÇÍÇâÊñ Ç…ï`âÊÇ∑ÇÈÇ…ÇÕÅAäœé@ì_ÅAÉJÉÅÉâÇÃå¸Ç´ÅAï\é¶ïΩñ Ç‹Ç≈ÇÃãóó£ÇåàÇflÇ‹Ç∑ÅBï\é¶ãÈå` (viewing rectangle) ÇÕå¸Ç´Çï\Ç∑ÉxÉNÉgÉãÇ…ëŒÇµÇƒèÌÇ…êÇíºÇ≈džÇÈÇΔçlǶNjÇ∑ÅBDZǧÇ∑ÇÈÇΔÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃê›åvÇ™íPèÉÇ…Ç»ÇËÇ‹Ç∑ÅB

ÉJÉÅÉâç¿ïW

ÉJÉÅÉâÇÃà íuÇΔå¸Ç´Ç™ÇÌÇ©ÇÈÇΔÅAÉJÉÅÉâÇÃéãê¸Ç Z é≤Ç…ëµÇ¶ÅAY é≤ÇÃè„è∏ï˚å¸ÇÉJÉÅÉâÇÃè„ï˚å¸Ç…Ç∑ÇÈÇÊǧÅAäœé@ì_Çå¥ì_Ç…à⁄ìÆÇµÅAç¿ïWånÇâÒì]Ç≥ÇπÇÈïœä∑É}ÉgÉäÉNÉX (transformation matrix) ÇåvéZÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃç¿ïWånÇ™ìæÇÁÇÍÇÈÇΔÅAä»íPÇ… Z é≤DžǬǢǃÇÃâìãflñ@ï‚ê≥ (z-perspective correction) ÇçsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

å„Ç≈ÅAÇ≥ÇÁÇ…ÉJÉÅÉâÇÃïœä∑É}ÉgÉäÉNÉXÇèCê≥ǵÅAÉNÉäÉbÉsÉìÉOÇÉIÉvÉeÉBÉ}ÉCÉYǵNjÇ∑ÅBDZÇÍÇÕâÊñ ÇÃïœä∑É}ÉgÉäÉNÉXÇ…ÇÕâeãøÇó^ǶNjÇ∑Ç™ÅAç≈èIåãâ Ç…ÇÕâeãøÇµÇ‹ÇπÇÒÅB

âÊñ ç¿ïWån

é¿ç€Ç… RAVE ÉGÉìÉWÉìÇ…ìnÇ≥ÇÍÇÈç¿ïWÇ≈Ç∑ÅBx ÇΔ y ÇÕÉsÉNÉZÉãílÇ≈ÅAz ÇÕ 0 Ç©ÇÁ 1 ÇÃä‘Ç≈Ç∑ÅB

Å@

3D ÉåÉìÉ_ÉäÉìÉOÉpÉCÉvÉâÉCÉì

ï`âÊÇ∑ÇÈÉIÉuÉWÉFÉNÉgÇÕÇ∑Ç◊ǃâ‰ÅXÇÃÉåÉìÉ_ÉäÉìÉOÉpÉCÉvÉâÉCÉìÇí ÇµÇ‹Ç∑ÅBDZDZDžÉpÉCÉvÉâÉCÉìëSëÃÇé¶ÇµÇ‹Ç∑ÅBå„Ç…êîéÆÇå©Ç»Ç™ÇÁå¬ÅXÇÃïîï™Çå©ÇƒÇ¢Ç´Ç‹Ç∑ÅBDZDZÇ≈ÇÕèqÇ◊ǻǢïîï™ (ÉâÉCÉeÉBÉìÉOÅAÉoÉbÉNÉtÉFÉCÉVÉìÉO) ÇÕÅAéQçlï∂å£ÇÃíÜÇÃâΩç˚Ç©ÇÃñ{ÇÃíÜÇ≈êGÇÍÇÁÇÍǃǢNjÇ∑ÅBDZDZÇ≈ÇÕÇ∑Ç◊ǃÇÃÉ|ÉäÉSÉìÇ™ì å` (convex) Ç≈džÇÈÇΔâºíËǵNjÇ∑ÅBì å`Ç≈ǻǢÉ|ÉäÉSÉìÇÕï°êîÇÃì å`ÇÃÉ|ÉäÉSÉìÇï¿Ç◊ǃçÏê¨Ç≈Ç´ÇÈÇ©ÇÁÇ≈Ç∑ÅB

  1. ÉIÉuÉWÉFÉNÉgÇ™êçë‰ÇÃì‡ïîÇ…äÆëSÇ…ä‹Ç‹ÇÍÇÈǩǫǧǩÅAäÆëSÇ…êçë‰ÇÃäOïîDždžÇÈÇÃÇ©ÅAïîï™ìIÇ…êçë‰ÇÃì‡ïîÇΔèdÇ»ÇÈÇÃÇ©ÅAåàíËǵNjÇ∑ÅBêçë‰ÇÃäOïîÇÃÉIÉuÉWÉFÉNÉgÇÕèúäOǵNjÇ∑ÅB
  2. ÉIÉuÉWÉFÉNÉgÇÃïœä∑É}ÉgÉäÉNÉXÇåvéZǵÅAÉIÉuÉWÉFÉNÉgÇÉJÉÅÉâç¿ïWÇ…ïœä∑ǵNjÇ∑ÅB
  3. åıåπ (ÉâÉCÉeÉBÉìÉO) ÇåàíËǵNjÇ∑ (DZÇà TECHNOTE Ç≈ÇÕêGÇÍÇ‹ÇπÇÒ)ÅB
  4. ó†ë§Ç™Ç±ÇøÇÁÇå¸Ç¢ÇƒÇ¢ÇÈ (ÉoÉbÉNÉtÉFÅ[ÉVÉìÉO) É|ÉäÉSÉìÇèúäOǵNjÇ∑ (êGÇÍÇ‹ÇπÇÒ)ÅB
  5. ÉIÉuÉWÉFÉNÉgì‡ÇÃécÇÈÉ|ÉäÉSÉìDžǬǢǃÅAǪÇÍǺÇÍéüÇÃèàóùÇçsǢNjÇ∑ÅB
    1. ÉIÉuÉWÉFÉNÉgÇ™êçë‰ÇΔåÇÌÇÈèÍçáÇÕêçë‰Ç…ǬǢǃÉNÉäÉbÉvǵNjÇ∑ÅB
    2. É|ÉäÉSÉìÇâÊñ ç¿ïWÇ…ìäâeǵNjÇ∑ÅB
    3. É|ÉäÉSÉìÇï`âÊǵNjÇ∑ÅB

Å@

Å@

ì_ÇÃìäâe

É}ÉgÉäÉNÉXÇÃåvéZÇÕÇ∑Ç◊ǃè»Ç´ÅAÉJÉÅÉâãÛä‘Ç©ÇÁâÊñ ãÛä‘Ç÷ì_Çìäâe (projection) Ç∑ÇÈÇΔDZÇÎÇ©ÇÁÇÕÇ∂ÇflÇ‹Ç∑ÅBÉ}ÉgÉäÉNÉXÇÃåvéZÇÕëÂîºÇà 3D ÇÃñ{Ç≈éÊÇËè„Ç∞ÇÁÇÍǃǢNjÇ∑ÅB

ÉJÉÅÉâãÛä‘Ç≈ÇÕÅAâ‰ÅXÇÃÉJÉÅÉâÇÕå¥ì_Ç…íuÇ©ÇÍÅAZ é≤Çå©â∫ÇÎÇ∑à íuDždžÇËÇ‹Ç∑ÅBï\é¶ïΩñ ÇÕ Z é≤ÇΔêÇíºÇ…àÍíËÇÃãóó£ (Zview) Çã≤ÇÒÇ≈íuÇ©ÇÍÇ‹Ç∑ÅBdžÇÈì_ (x0, y0, z0) Çï\é¶ïΩñ Ç…ìäâeǵNjÇ∑ÅBǪÇÍÇ…ÇÕÅAå¥ì_Ç©ÇÁǪÇÃì_Ç‹Ç≈ìäâeÇ≥ÇÍÇΩåıê¸ÇΔï\é¶ïΩñ ÇΔÇÃåì_ÇåvéZǵNjÇ∑ÅB

DZÇÃåvéZÇÕ x ç¿ïWÇΔ y ç¿ïWDžǬǢǃÇÕìØÇ∂Ç»ÇÃÇ≈ÅADZDZÇ≈ÇÕ x ç¿ïWÇÃåvéZÇæÇØÇé¶ÇµÇ‹Ç∑ÅB

2 ǬÇÃìØÇ∂ÇÊǧǻéOäpå`ǙdžÇËÇ‹Ç∑ÅBàÍï˚ÇÕ (0,0,0)Å`(0,0,Z0)Å`(X0,0,Z0)ÅALJǧàÍï˚ÇÕ (0,0,0)Å`(0,0,Zview)Å`(Xview,0,Zview) Ç≈Ç∑ÅBóºéOäpå`ÇÕîCà”Çà 2 ï”ÇÃäÑçáÇ™ìØÇ∂Ç≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

Xview/Zview = X0/Z0

Xview DžǬǢǃÇÃìäâeÇÃåvéZéÆÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB

Xview = X0 * zview / z0
Yview = Y0 * zview / z0

ï\é¶ãóó£ÇÃëIë

ï\é¶ïΩñ ÇîzíuÇ∑ÇÈê≥ämÇ»ãóó£ÇëIëÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉRÉìÉeÉLÉXÉgÇÃï\é¶ãÈå`ÇÃíÜêSÇ… Z é≤Ç™óàÇÈÇÊǧîzíuǵNjÇ∑ÅBêlä‘ÇÃéãñÏÇ…ó^ǶÇÈâúçsÇ´ÇëIëǵNjÇ∑ÅBéOäpå` (0,0,0)Å`(0,0,Zview)Å`(XView, 0,ZView) ǙdžÇÈÇΔǵǃÅAï\é¶óÃàÊÇÃîºï™ÇΔǵǃäpìxÇåvéZǵÅAǪÇÍÇ 2 î{ǵNjÇ∑ÅB

DZDZÇ≈ÇÕÅAXView ÇÉRÉìÉeÉLÉXÉgÇÃïùÇÃîºï™ (ÉsÉNÉZÉãÇ≈) ÇΔǵNjÇ∑ÅB

tan (angle) = Xview/Zview;
angle = tan-1 (Xview/Zview);

ǵÇΩǙǡǃç≈èIìIÇ»ï\é¶äpìx (viewing angle) ÇÕDZÇà 2 î{ÅAǬNjÇË 2tan-1 (Xview/Zview) Ç≈Ç∑ÅBìØólÇ…ècÇÃéãñÏÇÕ 2tan-1 (Yview/Zview) Ç≈Ç∑ÅB

ï ÇÃï˚ñ@ÇΔǵǃÅAì¡íËÇÃéãñÏÇ©ÇÁïΩñ ÇΔå¥ì_ÇÃãóó£ÇåàíËÇ∑ÇÈï˚ñ@LJdžÇËÇ‹Ç∑ÅBìKêÿÇ»êÖïΩï\é¶äpìxÇÕÇ®ÇÊǪ 110 ìxÇ≈Ç∑ÅB

Zview = Xview/tan(horizontal_angle/2)
Ç‹ÇΩÇÕ
Zview = Yview/tan(vertical_angle/2)

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ï°êîÇÃÉRÉìÉeÉLÉXÉgÉTÉCÉYÇ≈ìÆçÏÇ∑ÇÈïKóvǙdžÇÈèÍçáÇÕÅAÇ∑Ç◊ǃÇÃÉÇÉfÉãÉfÅ[É^ÇíPàÍÇÃÉRÉìÉeÉLÉXÉgÉTÉCÉYÇ…åãÇ—ïtÇØÇƒÇµÇ‹Ç§ÇÃÇÕÉiÉìÉZÉìÉXÇ≈Ç∑ÅBDZÇÃèÍçáÅAÇÊÇËè¨Ç≥Ç¢ÉèÅ[ÉãÉhÇ≈ÉÇÉfÉãÇç\ízǵǃÅAç≈èIåãâ ÇìKêÿÇ»âÊñ âëúìxÇ…çáÇÌÇπǃägëÂǵNjÇ∑ÅB32x24 ÇÃï\é¶ÉEÉBÉìÉhÉEÇÕÅAç≈èIÇà x ílÇΔ y ílÇêÆêîî{Ç≈ 512x384ÅA640x480ÅA800x600ÅA832x624ÅA1024x768 Ç…ägëÂâ¬î\Ç≈Ç∑ÅBÇ∑Ç◊ǃÇÃÉNÉäÉbÉsÉìÉOÇ‚ÉÇÉfÉãÇÃåvéZÇÕè¨Ç≥Ç¢ílÇ≈çsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

Å@

êçë‰Ç…çáÇÌÇπÇΩÉNÉäÉbÉsÉìÉO

éãì_êçë‰ÇÃäOïîÇ…äOÇÍÇΩÉ|ÉäÉSÉìÇÕÇ∑njǂÇ≠ä‘à¯Ç´ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBêçë‰ÇÃë§ñ Çà 4 ǬÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇÕï\é¶ãÈå`ÇÃÉTÉCÉYÇΔï\é¶ïΩñ ÇÃãóó£Ç©ÇÁåvéZÇ≈Ç´Ç‹Ç∑ÅB

â‰ÅXÇÃìäâeéÆ (projection formula) Ç…ÇÕ z Ç…ÇÊÇÈèúéZÇ™ä‹Ç‹ÇÍÇÈÇÃÇ≈ÅAz<=0 ÇΔÇ»ÇÈì_Ç™ìäâeÇ≥ÇÍǻǢÇÊÇ§Ç…ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBDZÇÍÇÕÉqÉUÅ[ïΩñ  (z=hither) ÇéwíËÇ∑ÇÈDZÇΔÇ≈çsǢNjÇ∑ÅBìØólÇ…ÅAÉàÉìÉNÉäÉbÉsÉìÉOïΩñ  (z=yon) ÇéwíËǵǃÅAÉJÉÅÉâÇ©ÇÁîÒèÌÇ…âìÇ¢ãóó£Ç…džÇÈÉIÉuÉWÉFÉNÉgLJèúäOǵNjÇ∑ÅB

6 ǬÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇíËã`Ç∑ÇÈëOÇ…ÅAǪLJǪLJì_ÅAê¸ÅAì å`ÇÃÉ|ÉäÉSÉìÇ 3D ïΩñ Ç≈ÉNÉäÉbÉvÇ∑ÇÈï˚ñ@ÇèqÇ◊Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBí èÌîCà”ÇÃïΩñ ÇÕéüÇÃï˚íˆéÆÇ≈ï\ǵNjÇ∑ÅB

Ax + By + Cz - D = 0

(A,B,C) Ç™ñ@ê¸ÉxÉNÉgÉã (plane's normal) ÇΔÇ»ÇËÇ‹Ç∑ÅB(A,B,C) Ç™íPà ÉxÉNÉgÉãÇæÇΔÅAD ÇÕå¥ì_Ç©ÇÁïΩñ Ç‹Ç≈ÇÃãóó£Ç…Ç»ÇËÇ‹Ç∑ÅB

îCà”Çà 3D ïΩñ Ç≈ì_ÇÉNÉäÉbÉvÇ∑ÇÈï˚ñ@

ñ@ê¸ÉxÉNÉgÉã (N) ÇΔïΩñ è„ÇÃì_ P0 ǙdžÇÈÇΔǵNjÇ∑ÅB

ñ@ê¸ÉxÉNÉgÉã: N = Ai + Bj + Ck
ì_: P0 = (X0,Y0,Z0)

ǪÇÃïΩñ è„ÇÃëÊ 2 ÇÃîCà”ÇÃì_ P ÇëIÇ—ÅAP0 Ç©ÇÁ P Ç÷ê¸ï™ L Çà¯Ç´Ç‹Ç∑ÅB

P = (X,Y,Z)
L = (X-X0)i + (Y-Y0)j + (Z-Z0)k

N ÇÕïΩñ è„ÇÃÇ«ÇÃê¸ÇΔLJêÇíºÇ≈džÇÈDZÇΔÇ™ÇÌǩǡǃǢNjÇ∑ÅB2 ǬÇÃÉxÉNÉgÉãÇÃÉhÉbÉgêœ (dot product = ÅE) ÇÕ 0 Ç…Ç»ÇËÇ‹Ç∑ÅB

LÅEN = 0
A(X-X0) + B(Y-Y0) + C(Z-Z0) = 0
AX + BY + CZ = AX0 + BY0 + CZ0

PÅEN = P0ÅEN

ïΩñ è„ÇÃîCà”ÇÃì_ÇΔñ@ê¸ÉxÉNÉgÉãÇΔÇÃÉhÉbÉgêœÇÕÇ∑Ç◊ǃìØÇ∂Ç≈ÅAãóó£ D Ç…Ç»ÇËÇ‹Ç∑ÅB

džÇÈì_DžǬǢǃÅAǪÇÃì_ÇΔñ@ê¸ÉxÉNÉgÉãÇΔÇÃÉhÉbÉgêœÇãÅÇflÇÈÇΔÅAǪÇÃñ@ê¸ÉxÉNÉgÉãÇ…âàÇ¡ÇΩãóó£Ç™ìæÇÁÇÍÇ‹Ç∑ÅBǪÇÃãóó£Ç™ D ÇÊÇËëÂÇ´Ç¢ÇΔÅAǪÇÃì_ÇÕïΩñ ÇÃì‡ïîDždžÇËÅAÉNÉäÉbÉvÇ≥ÇÍÇ‹ÇπÇÒÅBãtÇ…è¨Ç≥Ç¢ÇΔÅAǪÇÃì_ÇÕïΩñ ÇÃäOë§Ç…džÇËÅAÉNÉäÉbÉvÇ≥ÇÍÇ‹Ç∑ÅB1 ǬÇÃì_ÇÃÉNÉäÉbÉsÉìÉOÇ…ÇÕÅA1 âÒÇÃÉhÉbÉgêœÇΔ 1 âÒÇÃî‰ärÇ™ïKóvÇ≈Ç∑ÅB

îCà”Çà 3D ïΩñ Ç≈ê¸ÇÉNÉäÉbÉvÇ∑ÇÈï˚ñ@

ê¸ï™ÇÃÉNÉäÉbÉsÉìÉOLJìØíˆìxÇ…ä»íPÇ≈Ç∑ÅBê¸ï™ÇÃóºí[ÇÃì_ÇÃãóó£ÇåvéZǵNjÇ∑ÅBóºï˚ÇΔLJïΩñ ÇÃì‡ïîDždžÇÍÇŒÅAê¸ï™ëSëÃÇ™ïΩñ ÇÃì‡ïîDždžÇÈDZÇΔÇ…Ç»ÇËÅAÉNÉäÉbÉsÉìÉOÇ≥ÇÍÇ‹ÇπÇÒÅBóºï˚ÇÃì_Ç™ïΩñ ÇÃäOë§Ç…džÇÈèÍçáÇÕÅAê¸ï™ëSëÃÇ™ÉNÉäÉbÉvÇ≥ÇÍÇ‹Ç∑ÅBì_Ç™ïΩñ ÇÃì‡ÇΔäODždžÇÈèÍçáÇÕÅAê¸ï™ÇΔÉNÉäÉbÉsÉìÉOïΩñ ÇΔÇÃåì_ÇãÅÇflÅAïΩñ ÇÃäOë§Ç…džÇÈïîï™ÇÉNÉäÉbÉvǵNjÇ∑ÅB

ÉNÉäÉbÉsÉìÉOïΩñ è„ÇÃì_ÇÃÉhÉbÉgêœÇÕ D Ç≈džÇÈDZÇΔÇ™ÇÌǩǡǃǢNjÇ∑ÅBP1 (X1,Y1,Z1) Ç©ÇÁ P2 (X2,Y2,Z2) Ç÷éäÇÈê¸ï™ÇÃÉpÉâÉÅÅ[É^ï˚íˆéÆ (parametric equation) ÇÕéüÇÃÇΔÇ®ÇËÇ≈Ç∑ÅBDZDZÇ≈ÅAt Ç™ 0 Ç©ÇÁ 1 Ç…ïœâªÇ∑ÇÈDžǬÇÍǃì_ P ÇÕ P1 Ç©ÇÁ P2 Ç÷ÇΔïœâªÇµÇ‹Ç∑ÅB

P = P1 + t(P2-P1)

PÅEN = D ÇΔÇ»ÇÈ t ÇÃílÇÕéüÇÃÇÊǧDžǵǃãÅÇflÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

PÅEN = D
(P1 + t(P2-P1)ÅEN = D
P1ÅEN + t(P2ÅEN - P1ÅEN) = D
Å@
D1 = P1ÅEN
D2 = P2ÅEN
Å@
D1 + t(D2-D1) = D
Å@
Å@Å@(D-D1)
t = -------
Å@Å@(D2-D1)

D1 ÇΔ D2 ÇÕÇ∑Ç≈Ç…ÉNÉäÉbÉvÇ∑ÇÈê¸ï™Ç…ǬǢǃãÅÇflÇΩÉhÉbÉgêœÇ≈Ç∑ÅBD ÇÕïΩñ Ç…ǬǢǃÇ∑Ç≈Ç…ãÅÇflÇÁÇÍǃǢNjÇ∑ÅBDZǧǵǃãÅÇflÇΩ T Çè„ãLÇÃÉpÉâÉÅÅ[É^ï˚íˆéÆÇ…ë„ì¸ÇµÇƒ P ílÇãÅÇflǃÇ≠ÇæÇ≥Ç¢ÅB

îCà”Çà 3D ïΩñ Ç≈ì å`ÇÃÉ|ÉäÉSÉìÇÉNÉäÉbÉvÇ∑ÇÈï˚ñ@

ì å`ÇÃÉ|ÉäÉSÉìÇïΩñ Ç≈ÉNÉäÉbÉvÇ∑ÇÈÇ…ÇÕÅAäeï”DžǬǢǃèáÇ…ïΩñ Ç…ëŒÇµÇƒÉNÉäÉbÉsÉìÉOÇÃåüç∏ÇǵNjÇ∑ÅBDZÇÃåãâ êVǵǢì å`ÇÃÉ|ÉäÉSÉìÇ™ìæÇÁÇÍÇ‹Ç∑ÅBDZÇÃèàóùÇ≈í∏ì_Ç™ëùǶÇÈDZÇΔLJå∏ÇÈDZÇΔLJdžÇËÇ‹Ç∑ (ó·äOÇÕÉ|ÉäÉSÉìÇ™äÆëSÇ…èúäOÇ≥ÇÍÇÈèÍçáÇ≈Ç∑)ÅB

ä»íPÇ»ÉAÉãÉSÉäÉYÉÄÇΔǵǃÅAÉ|ÉäÉSÉìÇÃäeí∏ì_ÇèáÇ…í≤Ç◊ÇÈï˚ñ@ǙdžÇËÇ‹Ç∑ÅBǪÇÍǺÇÍ 2 ǬÇÃí∏ì_DžǬǢǃÅAç≈èâÇÃì_Ç™ïΩñ ì‡Ç…é˚Ç‹ÇÈÇΔÇ´ÇÕÅAǪÇÍÇèoóÕǵNjÇ∑ÅB2 ǬÇÃì_Ç™ïΩñ ÇÇÕÇ≥ÇÒÇ≈ï ÇÃë§Ç…džÇÈèÍçáÇÕåì_ÇèoóÕǵNjÇ∑ÅB

Å@

ÉNÉäÉbÉsÉìÉOÇ…égǧêçë‰

ïΩñ Ç…ëŒÇµÇƒÉ|ÉäÉSÉìÇÉNÉäÉbÉsÉìÉOÇ∑ÇÈï˚ñ@Ç™ÇÌÇ©ÇËNjǵÇΩÅBÉNÉäÉbÉsÉìÉOÇ…ópÇ¢ÇÈêçë‰ÇÃäeñ ÇÃï˚íˆéÆÇåvéZÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBà»ëOÇÃÇΔÇ®ÇËÅAéãì_ÇÕå¥ì_DždžÇËÅAï\é¶ãÈå`ÇÕàÍíËÇÃãóó£ÅAZview DždžÇËÇ‹Ç∑ÅB

Xview = view_width/2
Yview = view_height/2
Zview = view_plane_distance

É|ÉäÉSÉìÇïΩñ Ç≈ÉNÉäÉbÉvÇ∑ÇÈï˚ñ@Ç™ÇÌǩǡÇΩÇΔDZÇÎÇ≈ÅAÉNÉäÉbÉsÉìÉOÇ…ópÇ¢ÇÈêçë‰ÇÃäeñ ÇÃï˚íˆéÆÇåvéZǵNjÇ∑ÅBéãì_ÇÕå¥ì_Ç…ÅAï\é¶ãÈå`ÇÕ (0,0,distance) ÇíÜêSDžǵÇΩà íuDždžÇËÇ‹Ç∑ÅBÉqÉUÅ[ïΩñ ÇΔÉàÉìïΩñ ÇÃãóó£Ç‡ïKóvÇ≈Ç∑ÅB



DZDZÇ≈ 6 ǬÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇåvéZǵNjÇ∑ÅBÉqÉUÅ[ïΩñ ÇΔÉàÉìïΩñ Ç™àÍî‘ä»íPÇ≈Ç∑ÅBÇ¢Ç∏ÇÍLJ Z é≤Ç…êÇíºÇæÇ©ÇÁÇ≈Ç∑ÅB

ÉqÉUÅ[ïΩñ ÇΔÉàÉìïΩñ ÇåvéZÇ∑ÇÈÇÃÇ™ç≈LJä»íPÇ≈Ç∑ÅB

ÉqÉUÅ[ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (0,0,1)ÅAãóó£ = hither
ÉàÉìïΩñ : ñ@ê¸ÉxÉNÉgÉã = (0,0,-1)ÅAãóó£ = -yon

écÇËÇà 4 ǬÇÃïΩñ ÇÕÇ∑Ç◊ǃå¥ì_Çí ÇËÇ‹Ç∑ÅBǵÇΩǙǡǃèÌÇ…ãóó£ÇÕ 0 Ç≈Ç∑ÅBêÖïΩÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇÕÅAå¥ì_Ç©ÇÁ (X0,0,Z0) ÇΔ (-X0,0,Z0) Ç÷éäÇÈê¸ï™ÇΔêÇíºÇ»ñ@ê¸ÉxÉNÉgÉãÇëIÇÒÇ≈ãÅÇflÇ‹Ç∑ÅB

X ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (-Z0,0,X0)ÅAãóó£ = 0
X ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (Z0, 0,X0)ÅAãóó£ = 0

Y ç¿ïWLJìØólÇÃï˚ñ@Ç≈ãÅÇflÇ‹Ç∑ÅB

à”ñ°ÇÃdžÇÈãóó£Ç≈džÇÈÇΩÇflÇ…ÇÕÅADZÇÍÇÁÇÃñ@ê¸ÉxÉNÉgÉãÇÕÇ∑Ç◊ǃí∑Ç≥ 1.0 Ç…ê≥ãKâªÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

ÉqÉUÅ[ílÇΔÉàÉìílÇëIÇ‘

ÉqÉUÅ[ílÇÕÉJÉÅÉâÇÃëOÇ…åªÇÍÇÈç≈LJãflÇ¢ÉIÉuÉWÉFÉNÉgÇÃãóó£ÇÊÇËè¨Ç≥Ç≠Ç»Ç≠ǃÇÕÇ»ÇËÇ‹ÇπÇÒÅBäÓñ{ìIÇ…ÇÕÅAínå` (terrain) Ç‚ÉIÉuÉWÉFÉNÉgǙDZÇÃãóó£ÇÊÇËéËëOÇ…óàǻǢÇÊǧè’ìÀåüím (collision detection) ÇǵǻÇ≠ǃÇÕÇ»ÇËÇ‹ÇπÇÒÅBǪǧǻǡǃǢǻǢÇΔÇ∑ÇÍÇŒÅAä‘à·Ç¡ÇƒÅAäœé@é“Ç™ÉIÉuÉWÉFÉNÉgÇÃì‡ïîÇ…Ç¢ÇÈÇ©ÅAínñ ÇÃì‡ïîÇìßǩǵǃå©ÇƒÇ¢ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBDZÇÍÇÕ 3D ÉQÅ[ÉÄÇ≈ÇÊÇ≠džÇÈÉoÉOÇ≈Ç∑ÅB

ÉàÉìïΩñ Ç…ÇÊǡǃó\ä˙ÇπÇ å¯â Ç™ê∂Ç‹ÇÍÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅBâÊñ ÇÃí[Ç…å©Ç¶ÇƒÇ¢ÇÈínå`ÇíÜâõÇ…äÒÇπÇÈ (Z ïΩñ Çâ°êÿÇÈ) ÇΔè¡Ç¶ÇƒÇµÇ‹Ç§ÇΔÇ©ÅAdžǻÇΩÇ™ÉIÉuÉWÉFÉNÉgÇÃï˚Çå¸Ç≠ÇΔè¡Ç¶ÇƒÇµÇ‹Ç§Ç»Ç«Ç≈Ç∑ÅBÉàÉìílÇëÂÇ´Ç≠ǵÅAëºÇÃå¯â  (ÉtÉHÉMÉìÉO) Çâ¡Ç¶ÇÈÇΔÅAÉIÉuÉWÉFÉNÉgÇÕÇÊÇËÉXÉÄÅ[ÉYÇ…åªÇÍÇÈÇÊǧDžǻÇËÅAÉàÉìïΩñ Çâ°êÿÇÈç€Ç…ÉIÉuÉWÉFÉNÉgÇ™ìÀëRÉpÉbÇΔåªÇÍÇÈÇÃÇîÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

Å@

ÉNÉäÉbÉsÉìÉOÇÃÉIÉvÉeÉBÉ}ÉCÉY

ÉNÉäÉbÉsÉìÉOÇÕÇ∑Ç◊ǃÇÃÉ|ÉäÉSÉìÇ…ëŒÇµÇƒçsǧëÄçÏÇ»ÇÃÇ≈ÅAâ¬î\Ç»å¿ÇËçÇë¨Ç≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBóùëzìIÇ…ÇÕÅAÉIÉuÉWÉFÉNÉgÇ≤ÇΔÇ…çsǧåvéZÇç≈è¨Ç…ǵǃÅAâ¬î\Ç»å¿ÇËëÅÇ¢éûì_Ç≈èúäOÇ≈Ç´ÇÈLJÇÃÇÕèúäOǵNjÇ∑ÅBDZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAì¡Ç…ÉIÉuÉWÉFÉNÉgÇÃÉNÉäÉbÉsÉìÉOÇéÊÇËè„Ç∞Ç‹Ç∑ÅBínñ Ç»Ç«ëºÇÃLJÇÃÇÕÅABSP ÉcÉäÅ[ǻǫëºÇÃÉAÉãÉSÉäÉYÉÄÇ…ÇÊÇÈåvéZÇÃǟǧǙå¯ó¶ÇÊÇ≠ÉNÉäÉbÉvÇ≈Ç´ÇÈǩLJǵÇÍÇ‹ÇπÇÒÅB

ÉqÉUÅ[ïΩñ ÇÃÉIÉvÉeÉBÉ}ÉCÉY

âÊñ ÇÃí[ÇÃãflÇ≠Ç≈ÇÕäÙï™ãflÇ≠Ç≈ÉNÉäÉbÉvǵǃLJǩNjÇÌǻǢèÍçáÇÕÅAÉqÉUÅ[ïΩñ Ç…ÇÊÇÈÉNÉäÉbÉsÉìÉOÇè»Ç´ÅA4 ǬÇà x Ç®ÇÊÇ— y ÉNÉäÉbÉsÉìÉOïΩñ ÇÃè≈ì_Çå¥ì_Ç©ÇÁ (0,9,hither) Ç÷à⁄Ç∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

êçë‰Ç…ëŒÇ∑ÇÈã´äEÇΔÇ»ÇÈãÖñ ÇÃÉ`ÉFÉbÉN

ï°êîÉ|ÉäÉSÉìÇ©ÇÁç\ê¨Ç≥ÇÍÇÈîCà”ÇÃÉIÉuÉWÉFÉNÉgÇÕÅAÉIÉuÉWÉFÉNÉgëSëÃÇïÔÇfiã´äEÇΔÇ»ÇÈãÖñ  (bounding sphere) ÇãÅÇflÅAÉIÉuÉWÉFÉNÉgëSëÃÇ≈ä‘à¯Ç´èàóùÇçsǢNjÇ∑ÅBDZÇÃãÖñ ÇÃîºåa (radius) ÇÕå¥ì_Ç©ÇÁç≈LJâìÇ¢í∏ì_Ç‹Ç≈ÇÃãóó£Ç©ÇÁãÅÇflÇ‹Ç∑ÅB

ÉIÉuÉWÉFÉNÉgÇÃà íuÇΔâ‰ÅXÇÃïΩñ ÇΔÇÃÉhÉbÉgêœÇãÅÇflÇÈÇΔÅAãÖñ ÇÃíÜêSÇ™ÇÌÇ©ÇËÇ‹Ç∑ÅBDZÇÍÇ Dcenter ÇΔåƒÇ—Ç‹Ç∑ÅB

LJǵ (Dcenter + radius < Dplane) Ç™ê¨ÇËóßǃnjÅAãÖñ ëSëÃÇ™ïΩñ ÇÃäOë§Ç…džÇÈÇÃÇ≈ÅADZÇÍà»è„åvéZÇÕçsÇÌÇ∏ÉIÉuÉWÉFÉNÉgëSëÃÇèúäOÇ≈Ç´Ç‹Ç∑ÅB

LJǵ (Dcenter - radius > Dplane) ÇæÇΔÅAãÖñ ëSëÃǙDZÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇÃì‡ïîDždžÇËÇ‹Ç∑ÅBÉIÉuÉWÉFÉNÉgì‡ÇÃÉ|ÉäÉSÉìÇÕÇ«ÇÍLJïΩñ ÇΔåÇÌÇÈDZÇΔÇÕǻǢÇΩÇflÅADZÇÃÉIÉuÉWÉFÉNÉgÇÃÉtÉâÉOÇÉZÉbÉgǵǃÅAà»ç~ÇÃÉpÉCÉvÉâÉCÉìÇ≈ÅAèàóùó ÇÃëΩÇ¢É|ÉäÉSÉìÉåÉxÉãÇÃÉNÉäÉbÉsÉìÉOÇñ≥ë Ç…çsÇÌǻǢÇÊǧDžǵNjÇ∑ÅB

DZÇÍÇ…ÇÕêçë‰Çïœä∑ǵǃÉèÅ[ÉãÉhç¿ïWÇ…ñflÇ∑ÇÃÇ™àÍî‘ÇÊÇ¢ï˚ñ@Ç≈ǵÇÂǧÅBǪǧÇ∑ÇÍÇŒÅAïœä∑É}ÉgÉäÉNÉXÇåvéZÇπÇ∏Ç…ÉIÉuÉWÉFÉNÉgÇÃà íuÇíºê⁄ëÄçÏÇ≈Ç´Ç‹Ç∑ÅBãtïœä∑ÇÕÉJÉÅÉâÇ™à⁄ìÆÇµÇΩèÍçáDžǵǩåvéZÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅB

DZÇÃåvéZÇ…ÇÕÇΩÇ©ÇæÇ© 6 âÒÇÃÉhÉbÉgêœÇµÇ©ïKóvdžÇËÇ‹ÇπÇÒÅBDZÇÍÇæÇØÇ≈ÅAÉpÉCÉvÉâÉCÉìÇ≈àµÇ§ÉIÉuÉWÉFÉNÉgÇÃå¬êîÇ™å∏ÇËÅAïKóvÇ»É|ÉäÉSÉìÇÃÉNÉäÉbÉsÉìÉOÇÃâÒêîLJëÂïùÇ…å∏ÇËÇ‹Ç∑ÅBǵǩǵÉIÉuÉWÉFÉNÉgÇÃÇŸÇΔÇÒǫǙêçë‰ÇΔåÇÌÇÈèÍçáÇÕÅADZÇÃÉeÉNÉjÉbÉNÇÕê´î\ÇóéÇΔǵNjÇ∑ÅB

ÉNÉäÉbÉsÉìÉOópêçë‰Çê≥ãKâªÇ∑ÇÈ

äeÉ|ÉäÉSÉìÇÃÉNÉäÉbÉsÉìÉODžǮǢǃÅAäeí∏ì_ÇäeÉNÉäÉbÉvïΩñ Ç≈ÉNÉäÉbÉsÉìÉOÇ∑ÇÈÇΩÇflÇ… 1 âÒÇÃÉhÉbÉgêœÇ™ïKóvÇ≈Ç∑ÅBó·Ç¶ÇŒÅAé¿ç€Ç…ÇÕÉNÉäÉbÉsÉìÉOÇ™ãNDZÇÁǻǢèÍçáÇ≈LJÅA5 ǬÇÃí∏ì_Ç 6 ǬÇÃïΩñ Ç≈ÉNÉäÉbÉvÇ∑ÇÈÇΔÅA30 âÒÇÃÉhÉbÉgêœÅAǬNjÇË 90 âÒÇÃèÊéZÇΔ 60 âÒÇÃâ¡éZÇ™ïKóvÇ≈Ç∑ÅBñæÇÁǩDžÅAÇ«ÇÒÇ»ë¨Ç¢É}ÉVÉìÇ≈džǡǃLJÅADZÇÃâÒêîÇå∏ÇÁÇ∑DZÇΔÇ™ìæçÙÇ≈ǵÇÂǧÅB

êÖïΩÇ®ÇÊÇ—êÇíºÇÃÉNÉäÉbÉsÉìÉOïΩñ Ç™ 45 ìxÇÃäpìxDžǻǡǃǢÇÈèÍçáÅAÉhÉbÉgêœÇÃåvéZÇÕÅA1 âÒÇÃâ¡éZÇæÇØ (èÊéZÇÕǻǵ) Ç≈çœÇ›Ç‹Ç∑ÅBïΩñ ÇÃï˚íˆéÆÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB

X ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (-1,0,1)ÅAãóó£ = 0
Y ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (1, 0,1)ÅAãóó£ = 0

(ñ@ê¸ÉxÉNÉgÉãÇÕíPà ÉxÉNÉgÉãÇ…ê≥ãKâªÇ≥ÇÍÇ‹Ç∑ÅB)

ì_ P ÇΔç≈èâÇÃñ@ê¸ÉxÉNÉgÉãÇΔÇÃÉhÉbÉgêœÇãÅÇflÇÈèÍçáÅAãóó£ÇÕ -Xp + Zp Ç≈Ç∑ÅBî‰ärÇÕâ¡éZǻǵÇ≈çsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBLJǵ (Xp > Zp) Ç™ê¨ÇËóßǃnjÅAì_ÇÕÉNÉäÉbÉsÉìÉOÇ≥ÇÍÇ‹Ç∑ÅBê¸ï™Ç™ÉNÉäÉbÉsÉìÉOÇ≥ÇÍÇÈDZÇΔÇ™ÇÌÇ©ÇÍÇŒÅAêîâÒÇÃâ¡éZÇΔ 1 âÒÇÃèúéZÇ≈çsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ä˘ë∂ÇÃÉJÉÅÉâÉ}ÉgÉäÉNÉXÇ…Ç≥ÇÁÇ…ÅAX Ç®ÇÊÇ— Y ïΩñ Ç 45 ìxÇ…îzíuÇ∑ÇÈÉXÉPÅ[ÉäÉìÉOÉ}ÉgÉäÉNÉXÇìKópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBìØéûÇ…ÅAZ ç¿ïWïœä∑Çé{ǵǃ Z ílÇ 0 Ç©ÇÁ 1 ÇÃä‘Ç…Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

(Sx,Sy,Sz) = (Z0/Zyon * X0, z0/Zyon*Y0, 1/Zyon).

ì_Ç™âÊñ ãÛä‘Ç…ìäâeÇ≥ÇÍÇÈèÍçáÅAãtïœä∑Çé{ǵǃÅAX Ç®ÇÊÇ— Y ç¿ïWÇê≥ǵǢílÇ…ÉXÉPÅ[ÉäÉìÉOÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

(Sx,Sy,Sz) = (x0/z0, y0/z0, 1)

DZÇÃïœä∑ÇÕåãâ Ç RAVE ç¿ïWÇ…ìäâeÇ∑ÇÈêîéÆÇÃíÜÇ≈çsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉXÉPÅ[Éãå„ÇÃÉJÉÅÉâãÛä‘ì‡Çà (Xc, Yc, zc) DžǬǢǃÇÕÅAç≈èIÇÃìäâeï˚íˆéÆ (projection equation) ÇÕéüÇÃÇΔÇ®ÇËÇ≈Ç∑ÅB

InvW = 1/Zc;
Xp = Xc * X0 * invW;
Yp = Yc * Y0 * invW;
Zp = z
U/W = u * invW;
V/W = v * invW;

z ÇÃåªç›ÇÃÉXÉPÅ[ÉãílÇ≈ÇÕÉàÉìïΩñ Ç™ z=1.0 Ç…à íuǵNjÇ∑ÅBèúéZÇ≈ǪÇÍÇÊÇËǂǂëÂÇ´Ç¢ílÇégǶnjÅAÇ∑Ç◊ǃÇà z ílÇ™égópâ¬î\Ç» Z ÉoÉbÉtÉ@ãÛä‘ì‡Ç…é˚Ç‹ÇËÇ‹Ç∑ÅB

Å@

ÉeÉNÉXÉ`ÉÉä«óù

RAVE ÇÕç≈í·å¿ÇÃÉeÉNÉXÉ`ÉÉä«óùǵǩçsǢNjÇπÇÒÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉtÉâÉO (kQATexture_Lock) ÇéwíËÇ∑ÇÈDZÇΔÇ≈ÅAÉGÉìÉWÉìÇ…ëŒÇµÇƒÅAǪÇÃÉeÉNÉXÉ`ÉÉÇÉIÉìÉ{Å[Éh VRAM Ç…âiãvï€ë∂Ç∑ÇÈDZÇΔÇéwé¶Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÍÇÕèÌéûégópÇ∑ÇÈÉeÉNÉXÉ`ÉÉÇ…ÇÃÇ›éwíËǵǃÇ≠ÇæÇ≥Ç¢ÅBÉXÉèÉbÉvÇ≈ǴǻǢÉeÉNÉXÉ`ÉÉÇÃå¬êîÇ™ëΩÇ¢ÇΔëºÇÃÉeÉNÉXÉ`ÉÉÇï€ë∂Ç∑ÇÈÇΩÇflÇÃÉÅÉÇÉäÇ™ë´ÇËÇ»Ç≠Ç»ÇÈÇ©ÇÁÇ≈Ç∑ÅB

Ç«ÇÒÇ»èÍçáÇ≈LJÅAÉGÉìÉWÉìÇÕÇ«ÇÃÇÊǧǻÉeÉNÉXÉ`ÉÉÇ≈džÇÍí èÌÇÃÉÅÉÇÉäÇ…ï€éùǵǃǮǴÅAï`âÊÇ≈ïKóvDžǻǡÇΩéûÇæÇØ VRAM Ç…ÉRÉsÅ[Ç∑ÇÈÅAÇΔǢǧï˚ñ@ÇëIǑDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZǧÇ∑ÇÍÇŒÅAÉGÉìÉWÉìÇÕÅAdžÇÈéûì_Ç≈ VRAM Ç…î[Ç‹ÇÁǻǢǩÇÁÇΔǢǡǃÉeÉNÉXÉ`ÉÉÇÃçÏê¨Çãëî€ÇπÇ∏Ç…çœÇ›Ç‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕïKóvÇ»ÉeÉNÉXÉ`ÉÉÇämé¿Ç… RAVE ÉGÉìÉWÉìÇ…ÉçÅ[ÉhÇ∑ÇÈÇÊÇ§Ç…ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBDZÇÃïîï™Ç™ÅA3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ RAVE ÇåƒÇ—èoÇ∑ÇÊǧDžïœçXÇ∑ÇÈÇΩÇflÇ…ïKóvÇ»ÉRÅ[ÉhÇÃàÍî‘ëΩÇ¢â”èäÇ≈Ç∑ÅB

Ç‹Ç∏ÅAóùëzìIÇ»èÛãµÇ…Ç®ÇØÇÈÉeÉNÉXÉ`ÉÉä«óùÇ©ÇÁÇÕÇ∂ÇflÇ‹Ç∑ÅBǬǢÇ≈ǪÇÍÇ≈ÇÕë´ÇËǻǢïîï™Çï‚ǢNjÇ∑ÅBǪÇÍÇ©ÇÁÅAÉeÉNÉXÉ`ÉÉä«óùÇÃâ¸ëPÇÃÇΩÇflÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇΔÉGÉìÉWÉìǙǵÇΩǙǧÇ◊Ç´éñïøÇíÒé¶ÇµÇ‹Ç∑ÅB

RAVE ÉGÉìÉWÉìÇÃÅuóùëzìIÅvÇ»ÉeÉNÉXÉ`ÉÉä«óù

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÇΩÇ≠Ç≥ÇÒÇÃÉeÉNÉXÉ`ÉÉÇçÏê¨ÇµÇ‹Ç∑ (QATextureNew)ÅBïKóvÇ»ÉeÉNÉXÉ`ÉÉÇÃèWçáÇÕÉVÉXÉeÉÄÇ≈óòópâ¬î\Ç» VRAM ÇÃëçó ÇâzǶNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAdžÇÈÉeÉNÉXÉ`ÉÉÇÃê›íË (QASetPtr)ÅAǪÇÃÉeÉNÉXÉ`ÉÉÇégǧÉ|ÉäÉSÉìåQÇÃëóèoÇåJÇËï‘ǵǃÅAÇ∑Ç◊ǃÇÃÉ|ÉäÉSÉìÇï`âÊǵNjÇ∑ÅB1 å¬ÇÃÉVÅ[ÉìÇÃï`âÊÇ≈ìØÇ∂ÉeÉNÉXÉ`ÉÉÇï°êîâÒê›íËǵǃLJǩNjǢNjÇπÇÒÅBégópçœÇ›ÇÃÉeÉNÉXÉ`ÉÉÇÕçÌèúǵNjÇ∑ (QATextureDelete)ÅBÇ∑Ç≈Ç…ëóèoçœÇ›ÇÃéOäpå`ÇÕÅAǪÇÍÇ™égópÇ∑ÇÈÉeÉNÉXÉ`ÉÉÇ™çÌèúÇ≥ÇÍǃLJê≥ǵÇ≠ï`âÊÇ≥ÇÍÇ‹Ç∑ÅB

ÉAÉjÉÅÅ[ÉVÉáÉìÇÃäeÉtÉåÅ[ÉÄÇ≤ÇΔÇ…êVǵǢÉeÉNÉXÉ`ÉÉÇ™ê∂ê¨Ç≥ÇÍÇ‹Ç∑ÅBÉGÉìÉWÉìÇ™å¯ó¶ÇÊÇ≠ÉeÉNÉXÉ`ÉÉÇçÏê¨Ç≈Ç´ÇÈÇÊǧÅAÉAÉjÉÅÅ[ÉVÉáÉìÉeÉNÉXÉ`ÉÉÇ‚ÅAÉeÉNÉXÉ`ÉÉÉfÅ[É^ÇÉâÉCÉgÉ}ÉbÉvÇΔëgÇ›çáÇÌÇπÇΩÉeÉNÉXÉ`ÉÉÇ™çÏê¨Ç≈Ç´Ç‹Ç∑ÅB

óùëzìIÇ»ÉGÉìÉWÉìÇ≈džÇÍÇŒÅAÉNÉâÉbÉVÉÖǵÇΩÇËÅAîjä¸ÇµÇƒÇµÇ‹Ç¡ÇΩÉeÉNÉXÉ`ÉÉÇä‘à·Ç¶ÇƒégÇ¡ÇΩÇËÇπÇ∏Ç…ÅAÉVÅ[ÉìÇê≥ämÇ…ï`âÊÇ≈Ç´Ç‹Ç∑ÅBÇ‚ÇΩÇÁíxÇ≠ǻǡÇΩÇËÇπÇ∏Ç…ÅAÉGÉìÉWÉìÇÕÉeÉNÉXÉ`ÉÉÇÃçÏê¨ÇΔçÌèúÇå¯ó¶ÇÊÇ≠çsǢNjÇ∑ÅB

åªé¿ÇΔÇÃëŒâû

è„Ç≈èqÇ◊ÇΩÇÊǧǻóùëzìIÇ»ÉGÉìÉWÉìÇ…ãflǢLJÇÃÇçÏê¨Ç∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹Ç∑Ç™ÅAÉGÉìÉWÉìÇÕí èÌÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇΔÉAÉìÉçÅ[ÉhÇìKêÿÇ…ÉXÉPÉWÉÖÅ[ÉãÇ≈Ç´ÇÈèÓïÒÇéùǡǃǢNjÇπÇÒÅB

ÉGÉìÉWÉìÇÕ VRAM Ç…î[Ç‹ÇÈÇÊÇËëΩÇ≠ÇÃÉeÉNÉXÉ`ÉÉèWçáÇÃçÏê¨ÇãñÇ∑LJÇÃÇΔǵNjÇ∑ÅBDZÇÍÇÁÇÃÉeÉNÉXÉ`ÉÉÇ 1 Ǭ 1 ǬêÿÇËë÷ǶǃǢÇ≠ÇΔÅAÉGÉìÉWÉìÇÕì¡íËÇÃÉ|ÉäÉSÉìÇÃï`âÊÇå„âÒǵDžÇ∑ÇÈÇ©ÅAǪÇÍÇΔLJïKóvÇ»ÉeÉNÉXÉ`ÉÉÇ VRAM Ç…ÉRÉsÅ[Ç∑ÇÈÇ©ÅAÇ¢Ç∏ÇÍÇ©ÇÃï˚ñ@ÇÇΔÇËÇ‹Ç∑ÅBdžÇÈèÍçáÇÕÅAìØÇ∂ÉeÉNÉXÉ`ÉÉÇégǧÉ|ÉäÉSÉìǙLJǡÇΔÉoÉbÉtÉ@ÉäÉìÉOÇ≥ÇÍÇÈDZÇΔÇä˙ë“ǵǃÅAǢǡÇ≥Ç¢ï`âÊÇçsÇÌǻǢÅAÇΔǢǧDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBï ÇÃèÍçáÇÕÅAÉGÉìÉWÉìÇÕÇ∑ÇÆÇ…ï`âÊÇçsǢNjÇ∑Ç™ÅAÉeÉNÉXÉ`ÉÉÇ VRAM Ç…ÉRÉsÅ[Ç∑ÇÈÇÃÇ…í∑Ç¢éûä‘ǙǩǩÇËÇ‹Ç∑ÅB

ëΩÇ≠ÇÃÉGÉìÉWÉìÇÕ VRAM Ç…î[Ç‹ÇÁǻǢÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃÇÕã÷é~ǵNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕDZÇÃèÛãµÇÇ∑ÇÆÇ…ímÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑Ç™ (QATextureNew Ç™é∏îsÇ∑ÇÈ )ÅAåãâ ÇΔǵǃì¡íËéûì_DžǮǢǃÇÊÇËè≠êîÇÃÉeÉNÉXÉ`ÉÉèWçáǵǩégópÇ≈Ç´Ç‹ÇπÇÒÅBó·Ç¶ÇŒÅA2 ÉÅÉKÉoÉCÉgÇà 3D ÉJÅ[ÉhÇ≈ÅA640x480ÅA16 ÉrÉbÉgÇÃÉtÉçÉìÉgÉoÉbÉtÉ@ÅAÉoÉbÉNÉoÉbÉtÉ@ÅAZ ÉoÉbÉtÉ@ÇéùǬLJÇÃÇÕÅA250K ÇÃÉeÉNÉXÉ`ÉÉ VRAM ǵǩdžÇËÇ‹ÇπÇÒÅBè¨Ç≥Ç»ÉRÉìÉeÉLÉXÉgÇäÑÇËìñǃÇΩÇËÅAZ ÉoÉbÉtÉ@ÇégópÇµÇ»ÇØÇÍÇŒÅAVRAM Ç™ëΩÇ≠égǶÇÈÇÊǧDžǻÇËÇ‹Ç∑Ç™ÅAǪÇÃåãâ óòópâ¬î\Ç»ÉIÉvÉVÉáÉìÇ™å∏ÇËÇ‹Ç∑ÅB

DZÇÍÇ™à”ñ°Ç∑ÇÈÇÃÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ QATextureNew Ç™é∏îsÇ∑ÇÈèÍçáÇ…îıǶǃÅAïsóvÇ»ÉeÉNÉXÉ`ÉÉÇçÌèúǵǃÅAïKóvÇ»ÉeÉNÉXÉ`ÉÉÇÉçÅ[ÉhÇ∑ÇÈÉÅÉÇÉäãÛä‘ÇçÏÇÈïKóvǙdžÇÈÅAÇΔǢǧDZÇΔÇ≈Ç∑ÅBǵǩǵǻǙÇÁÅAÉGÉìÉWÉìÇÃíÜÇ…ÇÕÅAǪÇÃÉeÉNÉXÉ`ÉÉÇégópÇ∑ÇÈÉ|ÉäÉSÉìÇ™Ç∑Ç◊ǃÉâÉXÉ^ÉâÉCÉYçœÇ›Ç©Ç«Ç§Ç©ÇÉ`ÉFÉbÉNǵǻǢÇ≈çÌèúǵǃǵNjǧLJÇÃLJdžÇËÇ‹Ç∑ÅBDZÇÃïîï™Çà RAM ÇÕí èÌçƒégópÇ≥ÇÍÇÈÇΩÇflÅAä‘à·Ç¶ÇƒÉSÉ~Ç™ï`âÊÇ≥ÇÍǃǵNjǢNjÇ∑ÅBQASync ÇåƒÇ—èoǵǃǪÇÍÇ‹Ç≈ÇÃï`âÊÇäÆåãÇ≥ÇπÇÈDZÇΔÇÕÇ≈Ç´Ç‹Ç∑Ç™ÅAǪǧÇ∑ÇÈÇΔÅAîÒìØä˙ÉnÅ[ÉhÉEÉFÉAÇ™éùǬëΩÇ≠ÇÃóòì_ÇëπǻǧDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBÉnÅ[ÉhÉEÉFÉAÇ‚ RAVE ÉGÉìÉWÉìÇ™îÒìØä˙ÇÃï`âÊÇëΩÇ≠çsǶnjçsǧǟǫÅAQASync ÇÃåƒÇ—èoǵÇÕëÂÇ´Ç»ë¨ìxí·â∫ÇLJÇΩÇÁǵNjÇ∑ÅB

ÉAÉbÉvÉã 3D ÉAÉNÉZÉâÉåÅ[É^Ç≈ÇÕÅAQARenderEnd Ç™åƒÇŒÇÍÇΩéûÇ…ÅAÇ∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ™ VRAM Ç…Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉåÉìÉ_ÉäÉìÉOÉãÅ[Évì‡Ç≈ÉeÉNÉXÉ`ÉÉÇÃçÌèúÇÕÇ≈Ç´Ç‹ÇπÇÒÅBDZÇÃÇÊǧǻèÍçáÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÕdžNjÇËëΩÇ≠ÇÃëIëéàÇÕÇ»Ç≠ÅAÉGÉìÉWÉìÇ™ê≥ǵǢDZÇΔÇǵǃÇ≠ÇÍÇÈDZÇΔÇä˙ë“Ç∑ÇÈǵǩdžÇËÇ‹ÇπÇÒÅB

ÉGÉìÉWÉìÇÃÉeÉNÉXÉ`ÉÉä«óùÇÃêiÇflï˚

DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAÉGÉìÉWÉìÇ™ÉeÉNÉXÉ`ÉÉä«óùÇé¿ëïÇ∑ÇÈÇ–ÇΔǬÇÃï˚ñ@DžǬǢǃèqÇ◊Ç‹Ç∑ÅBDZÇÃï˚ñ@Ç≈ÇÕÅAÇÊÇËëΩÇ≠ÇÃÉeÉNÉXÉ`ÉÉÇà¿ëSÇ… VRAM Ç…íuÇ≠DZÇΔÇ™Ç≈Ç´ÅAïsé©ëRÇ»ÉâÉXÉ^ÉâÉCÉYÇãNDZÇ≥Ç∏Ç…ÅAà¿ëSÇ…ÉeÉNÉXÉ`ÉÉÇçÌèúÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ÉGÉìÉWÉìÇÃê›åvé“ÇÕ VRAM Ç…î[Ç‹ÇÈÇÊÇËëΩÇ≠ÇÃÉeÉNÉXÉ`ÉÉÇãñâ¬Ç∑ÇÈÇÊǧDžÇ∑Ç◊Ç´Ç≈Ç∑ÅBQATextureNew ì‡Ç≈ëÂó ÇÃåvéZÇçsǧèÍçáÇÕì¡Ç…ǪǧÇ≈Ç∑ÅBó·Ç¶ÇŒÅAÉGÉìÉWÉìÇ™ï°êîÉåÉxÉãÇÃÉ~ÉbÉvÉ}ÉbÉvÇçÏê¨ÇµÇΩÇËÅAÉ\ÉtÉgÉEÉFÉAÇ≈ÉeÉNÉXÉ`ÉÉÇà≥èkÇ∑ÇÈèÍçáÇÕÅAÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇÃìxDžDZǧǵÇΩåvéZÇ™åJÇËï‘Ç≥ÇÍÇÈÇΩÇflÅAê´î\Ç™óéÇøÇƒÇµÇ‹Ç¢Ç‹Ç∑ÅB

ÉeÉNÉXÉ`ÉÉÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉÅÉÇÉäÅAÉGÉìÉWÉìÇÃÉÅÉÇÉäÅAVRAM Ç…íuÇ≠DZÇΔÇ™Ç≈Ç´ÇÈLJÇÃÇΔǵNjÇ∑ÅBÉGÉìÉWÉìÇÃÉÅÉÇÉäÇÕǮǪÇÁÇ≠ÉVÉXÉeÉÄÉqÅ[ÉvÇ…äÑÇËìñǃÇÁÇÍÇÈÇ≈ǵÇÂǧǙÅAïKóvÇ»ÇÁÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvDždžǡǃLJǩNjǢNjÇπÇÒÅBVRAM è„ÇÃÉeÉNÉXÉ`ÉÉÇÕdžÇ≠Ç‹Ç≈ÉRÉsÅ[Ç≈Ç∑ÅBÉeÉNÉXÉ`ÉÉÇé∏ǧDZÇΔÇ»Ç≠ǢǬÇ≈LJçÌèúâ¬î\Ç≈Ç∑ÅBç≈å„Ç…ÅAÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃǂâï˙ÇÃç€ÇÕÇ≈Ç´ÇÈÇæÇØÉGÉìÉWÉìÇ™ìØä˙ÇéÊÇÈÇÃÇñhÇ¢Ç≈Ç≠ÇæÇ≥Ç¢ÅBÉGÉìÉWÉìÇÕÇ‹ÇΩÅAëóèoçœÇ›ÇÃÉ|ÉäÉSÉìÇ™ê≥ǵÇ≠ï`âÊÇ≥ÇÍÇΩDZÇΔÇämîFǵǃǩÇÁà¿ëSÇ…ÉeÉNÉXÉ`ÉÉÇçÌèúÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

éüÇ…ê›åvDžǬǢǃÅBÇ‹Ç∏ÅAÇ∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉDžǬǢǃéQèΔâÒêîÇÉJÉEÉìÉgÇ∑ÇÈÇÊǧDžǵNjÇ∑ÅBäÑÇËìñǃÇΩnjǩÇËÇÃÉeÉNÉXÉ`ÉÉÇÕéQèΔÉJÉEÉìÉgÇ 1 DžǵNjÇ∑ÅBÉ|ÉäÉSÉìÇëóèoÇ∑ÇÈÇΩÇ—Ç…ÅAéQèΔÉJÉEÉìÉgÇ 1 ÇæÇØëùǂǵNjÇ∑ÅBï`âÊÇ™çœÇfiÇΩÇ—Ç… 1 å∏ÇÁǵNjÇ∑ÅBç≈å„Ç…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ QATextureDelete ÇåƒÇ—èoǵÇΩÇÁÅAéQèΔÉJÉEÉìÉgÇ 1 å∏ÇÁǵNjÇ∑ÅBéQèΔÉJÉEÉìÉgÇ™Ç‹Çæê≥ÇÃílÇ»ÇÁÅAÉeÉNÉXÉ`ÉÉÇ VRAM Ç…ÉçÉbÉNǵǃñ¢ëRÇ…îjä¸Ç≥ÇÍǻǢÇÊǧDžǵNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉeÉNÉXÉ`ÉÉÇâï˙ǵÇΩç€ÅAéQèΔÉJÉEÉìÉgÇ™ 0 DžǻǡÇΩÇÁÅAVRAM Ç©ÇÁÉeÉNÉXÉ`ÉÉÇçÌèúǵÅAÉGÉìÉWÉìì‡ÇÃÉRÉsÅ[LJçÌèúǵNjÇ∑ÅB

ìØéûÇ…ÅAçÌèúÇÃÇΩÇflÇ…ÉLÉÖÅ[ÉCÉìÉOǵÇΩëSÉeÉNÉXÉ`ÉÉÇÃå¬êîLJÉOÉçÅ[ÉoÉãïœêîÇ…ï€éùǵǃǮǴNjÇ∑ÅBDZÇÃÉJÉEÉìÉgÇÕÅAQATextureDelete ì‡Ç≈ëùǂǵÅAÉåÉìÉ_ÉâÅ[Ç™ÉeÉNÉXÉ`ÉÉÇçÌèúǵÇΩÇÁå∏ÇÁǵNjÇ∑ÅB

ï`âÊÉRÉ}ÉìÉhÇ≈džÇÈÉeÉNÉXÉ`ÉÉÇ™éQèΔÇ≥ÇÍÇΩÇÁÅAǪÇÍÇ™ VRAM Ç…ÉçÅ[ÉhçœÇ›Ç©Ç«Ç§Ç©É`ÉFÉbÉNǵǃÇ≠ÇæÇ≥Ç¢ÅBVRAM Ç…Ç»ÇØÇÍÇŒÅAǪÇÃÉeÉNÉXÉ`ÉÉÇ™ì¸ÇÈÇæÇØÇÃãÛÇ´ÉXÉyÅ[ÉXÇíTǵNjÇ∑ÅBé˚óeâ¬î\Ç»ÉXÉyÅ[ÉXÇ™Ç»ÇØÇÍÇŒÅAìØíˆìxÇÃÉTÉCÉYÇÃï ÇÃÉeÉNÉXÉ`ÉÉÇíTǵÅAǪÇÍÇ VRAM Ç©ÇÁçÌèúǵNjÇ∑ÅBâºëzÉÅÉÇÉäÇ™ÉIÉìÇÃèÍçáÇÕÅAÉeÉNÉXÉ`ÉÉÇÉçÉbÉNǵǃÅAäÑÇËçûÇ›éûÇ≈LJÉRÉsÅ[Ç≈Ç´ÇÈÇÊǧDžǵǃǮǴNjÇ∑ÅB

ÉGÉìÉWÉìÇÃíÜÇ…ÇÕ VRAM ÇΔÉGÉìÉWÉìÉÅÉÇÉäÇäTîOìIÇ…ãÊï ÇµÇ»Ç¢Ç‡ÇÃLJdžÇËÇ‹Ç∑ÅBDZÇÃÇÊǧǻÉGÉìÉWÉìÇÕí èÌÅAé¿ç€Ç…ÉeÉNÉXÉ`ÉÉÇÃçÏê¨Ç™éwé¶Ç≥ÇÍÇΩéûì_Ç≈ (QATextureNew). VRAM Ç…ÉeÉNÉXÉ`ÉÉÇçÏê¨ÇµÅAǪDZDžÉRÉsÅ[ǵNjÇ∑ÅBDZÇÃé¿åªï˚ñ@Çé¶ÇµÇ‹Ç∑ÅBQATextureNew Ç™ÉeÉNÉXÉ`ÉÉÇäÑÇËìñǃÇÈÇæÇØÇÃè\ï™Ç»ÉÅÉÇÉäǙǻǢèÍçáÅAçÌèúÇÃÇΩÇflÇ…ÉLÉÖÅ[ÉCÉìÉOÇ≥ÇÍÇΩÉeÉNÉXÉ`ÉÉǙǻǢǩÉ`ÉFÉbÉNǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉǙdžÇÍÇŒÅAǪÇÃÉJÉEÉìÉgÇ™É[ÉçÇ…Ç»ÇÈÇ‹Ç≈ÉuÉçÉbÉNǵÅAÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃDžê¨å˜Ç∑ÇÈÇ©ÅAÉLÉÖÅ[è„ÇÃÇ∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ™çÌèúÇ≥ÇÍÇÈÇ‹Ç≈çƒééçsǵNjÇ∑ÅB

ç≈å„Ç…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ©ÇÁóòópâ¬î\Ç»ÉeÉNÉXÉ`ÉÉÉÅÉÇÉäÇÃó ÇÃñ‚Ç¢çáÇπÇéÛÇØÇΩÇÁÅAÇ∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ™çÌèúÇ≥ÇÍÇÈÇ‹Ç≈ìØä˙ÇéÊÇËÅAìKêÿÇ»ÉÅÉÇÉäó Çï‘ǵNjÇ∑ÅB

DZÇÃìÆçÏÇï\Ç∑âºëzÉRÅ[ÉhÇé¶ÇµÇ‹Ç∑ÅB

"QA" Ç≈énÇ‹ÇÈä÷êîÇÕïÅí ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìä÷êîÇ≈Ç∑ÅB
"eng" Ç≈énÇ‹ÇÈä÷êîÇÕÉGÉìÉWÉìÇÃì‡ïîä÷êîÇ≈Ç∑ÅBà»â∫Ç≈ÇÕÇ∑Ç◊ǃÇÃÉãÅ[É`ÉìÇ™íËã`Ç≥ÇÍǃǢÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB
"int" Ç≈énÇ‹ÇÈä÷êîÇÕÅAäÑÇËçûÇ›éûÇ‹ÇΩÇÕ MP É^ÉXÉNÇΔǵǃëñçsâ¬î\Ç»ÉGÉìÉWÉìä÷êîÇ≈Ç∑ÅB

VRAM_ENGINE ÇÕÅAï Ç…ÉGÉìÉWÉì VRAM ÇégǧÇÃÇ≈ÇÕÇ»Ç≠ÅAäÑÇËìñǃéûÇ…Ç∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ VRAM Ç…ÉRÉsÅ[Ç∑ÇÈÉGÉìÉWÉìÇ…äYìñǵNjÇ∑ÅB

QATextureNew
{
                  
#if VRAM_ENGINE
 engReserveMemory();
#endif
 ÉeÉNÉXÉ`ÉÉÉIÉuÉWÉFÉNÉgÇäÑÇËìñǃÇÈ
 éQèΔÉJÉEÉìÉg (refCount) Ç 1 Ç…ê›íËÇ∑ÇÈ
#if VRAM_ENGINE
 intLoadTexture();
#elseif
 if (ÉeÉNÉXÉ`ÉÉÇÃÉçÉbÉNÉtÉâÉOÇ™ÉIÉì)
  intLoadTexture();
#endif VRAM_ENGINE
}
                  
QATextureDetach
{
#if !VRAM_ENGINE
 engReserveMemory();
 ÉeÉNÉXÉ`ÉÉÇÉGÉìÉWÉìÉÅÉÇÉäÇ…ÉRÉsÅ[Ç∑ÇÈ
#endif
}
                  
QATextureDelete
{
 ÉeÉNÉXÉ`ÉÉÇÃéQèΔÉJÉEÉìÉgÇ 1 å∏ÇÁÇ∑
 if (refCount == 0)
 {
  engDeleteFromEngineMemory()
  engDeleteFromVRAM()
 }
 else
 {
  gNumberOfTexturesToDelete++;
  ÉeÉNÉXÉ`ÉÉÇÃÉçÉbÉNÉtÉâÉOÇê›íËÇ∑ÇÈ
  intLoadTexture();
 }
}
                  
engReserveMemory
{
 while ( (gNumberOfTexturesToDelete > 0) ǩǬ
   (ÉeÉNÉXÉ`ÉÉÇÉRÉsÅ[Ç∑ÇÈÇæÇØÇÃÉGÉìÉWÉìÉÅÉÇÉäǙǻǢ)
 {
  MPYield();
  YieldToAnyThread();
 }
}
                  
QADrawTriTexture
{
 assert (çÌèúÉLÉÖÅ[Ç…ÉeÉNÉXÉ`ÉÉǙǻǢ)
 ÉeÉNÉXÉ`ÉÉÇÃéQèΔÉJÉEÉìÉgÇ 1 ëùÇ‚Ç∑
 ï`âÊÉRÉ}ÉìÉhÇÉLÉÖÅ[ÉCÉìÉOÇ∑ÇÈ
}
                  
intDrawTriTexture
{
#if !VRAM_ENGINE
 if (ÉeÉNÉXÉ`ÉÉÇ™ VRAM DžǻǢ)
  intLoadTexture();
#endif
 éOäpå`Çï`âÊÇ∑ÇÈ
 ÉeÉNÉXÉ`ÉÉÇÃéQèΔÉJÉEÉìÉg (refCount) Ç 1 å∏ÇÁÇ∑
 if (ÉeÉNÉXÉ`ÉÉÇà refCount Ç™É[ÉçÇ…ìôǵǢ)
 {
  engDeleteFromEngineMemory()
  engDeleteFromVRAM()
  gNumberOfTexturesToDelete--;
 }
}
                  
intLoadTexture
{
#if !VRAM_ENGINE
 if (ÉeÉNÉXÉ`ÉÉÇì¸ÇÍÇÈ VRAM ǙǻǢ)
  ãÛÇ´Ç™Ç≈Ç´ÇÈÇ‹Ç≈ÉAÉìÉçÉbÉNÇ≥ÇÍÇΩÉeÉNÉXÉ`ÉÉÇçÌèúÇ∑ÇÈ
#endif
 ÉeÉNÉXÉ`ÉÉÇ VRAM Ç…ÉRÉsÅ[Ç∑ÇÈ
}


VRAM Ç©ÇÁÉeÉNÉXÉ`ÉÉÇçÌèúÇ∑ÇÈèÍçáÅAǵnjÇÁÇ≠égópÇ≥ÇÍǃǢǻǢ (LRU ÉLÉÉÉbÉVÉìÉO) ìØÇ∂ÉTÉCÉYÇÃÉeÉNÉXÉ`ÉÉÇëIÇÒÇ≈çÌèúǵNjÇ∑ÅB

É|ÉäÉSÉìÇÕÅAǪÇÍé©ëÃÇÃèáèòÇ≈ÇÕÇ»Ç≠ÅAVRAM Ç…ÉeÉNÉXÉ`ÉÉÇÉçÅ[ÉhÇ∑ÇÈâÒêîÇç≈è¨Ç…Ç∑ÇÈÇÊǧǻèáèòÇ≈ÉLÉÖÅ[ÉCÉìÉOÇ≈Ç´ÇÍÇŒóùëzìIÇ≈Ç∑ÅBǵǩǵñ‚ëËÇÕÅAìØÇ∂ Z ílÇã§óLÇ∑ÇÈï°êîÇÃÉ|ÉäÉSÉìÇÃàµÇ¢Ç≈Ç∑ÅBê≥ǵǢÉ|ÉäÉSÉìÇÃèáèòÇ≈ï`âÊǵÇΩÇΔÇ´ÇΔÇÕà·Ç§ÉsÉNÉZÉãílÇ™èëÇ´çûÇ‹ÇÍǃǵNjǢNjÇ∑ÅB

VRAM ÉGÉìÉWÉìÇÕÅAêVǵǢÉeÉNÉXÉ`ÉÉÇ™äÑÇËìñǃÇÁÇÍÇÈÇΔÉuÉçÉbÉNÇ∑ÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBëºÇÃÉGÉìÉWÉìÇÕÇŸÇΔÇÒÇ«ÉuÉçÉbÉNÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÇ™ (QATextureDetach ì‡Ç≈ÇÕ)ÅAÉeÉNÉXÉ`ÉÉÇ VRAM Ç…ÉçÅ[ÉhÇ∑ÇÈÇÃÇ…ÇÊÇËëΩÇ≠ÇÃéûä‘ǙǩǩÇËÇ‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ïpî…Ç…ÉeÉNÉXÉ`ÉÉÇïœçXÇ∑ÇÈèÍçáÇÕì¡Ç…ǪǧÇ≈Ç∑ÅBDZÇÍÇ©ÇÁÅAÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃDžÇÊÇÈïââ◊Çç≈è¨Ç…Ç∑ÇÈÇÊǧÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™çsǧÇ◊Ç´éñïøÇèqÇ◊Ç‹Ç∑ÅB

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉeÉNÉXÉ`ÉÉä«óùÇÃêiÇflï˚

DZDZÇ≈ÇÕÅAVRAM Ç…ì¸ÇÈÇÊÇËëΩÇ≠ÇÃÉeÉNÉXÉ`ÉÉǙdžÇÈDZÇΔÇâºíËǵNjÇ∑ÅBç°ì˙Ç≈ÇÕDZÇÍÇ™ïÅí ÇÃÉPÅ[ÉXÇæÇ©ÇÁÇ≈Ç∑ÅBÇΩÇæÅAì¡íËÇÃÉQÅ[ÉÄÉåÉxÉãÇ≈ÅAÉeÉNÉXÉ`ÉÉÇ™Ç∑Ç◊ǃ VRAM Ç…î[Ç‹ÇËÅAÉeÉNÉXÉ`ÉÉèWçáÇÃêÿÇËë÷ǶǙïsóvÇ»èÍçáÇÕÅAÇ∑ÇŒÇÁǵǢê´î\Ç™èoÇ‹Ç∑ÅB

QATextureNew ÇåƒÇ—èoÇ∑ÇΔÅAëΩÇ≠ÇÃÉGÉìÉWÉìÇÕé©ìÆìIÇ…ÉeÉNÉXÉ`ÉÉÇÉ~ÉbÉvÉ}ÉbÉvǵNjÇ∑ÅBǵǩǵDZǧÇ∑ÇÈÇΔÅAÉeÉNÉXÉ`ÉÉÇÃçÏê¨éûä‘Ç™ëùëÂÇ∑ÇÈÇÃÇ≈ÅAâ¬î\ǻǩǨÇËÉeÉNÉXÉ`ÉÉÇÕéñëOÇ…É~ÉbÉvÉ}ÉbÉvǵǃǮÇ≠ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBdžÇÁÇ©Ç∂ÇflÉ~ÉbÉvÉ}ÉbÉvÇ≥ÇÍÇΩÉeÉNÉXÉ`ÉÉÇÕ RAM ÇÇ®ÇÊǪ 33% ëΩÇ≠égópǵNjÇ∑Ç™ÅAÇΩÇ≠Ç≥ÇÒÇÃÉeÉNÉXÉ`ÉÉèWçáÇä«óùÇ∑ÇÈç€Ç…ëΩÇ≠ÇÃóòì_Ç™ê∂Ç∂Ç‹Ç∑ÅB

äÆëSÇ»ÉTÉCÉYÇÃÉeÉNÉXÉ`ÉÉÇ™ VRAM Ç…î[Ç‹ÇÁǻǢèÍçáÇ≈LJÅAÉeÉNÉXÉ`ÉÉÇÉ_ÉEÉìÉTÉìÉvÉãÇ∑ÇÈDZÇΔÇ≈ VRAM Ç…ì¸ÇÍÇÁÇÍÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBäÆëSÉTÉCÉYÇÃÉeÉNÉXÉ`ÉÉÇ≈ QATextureNew ÇåƒÇ—èoÇ∑ÇÃÇ≈ÇÕÇ»Ç≠ÅAéüÇ…è¨Ç≥Ç»É~ÉbÉvÉ}ÉbÉvÇ≈åƒÇ—èoǵNjÇ∑ÅBLJǡÇΔï°éGÇ»ó·Ç≈ÇÕÅAǪÇÃÉeÉNÉXÉ`ÉÉÇégǡǃï`âÊÇ≥ÇÍÇÈÉ|ÉäÉSÉìÇÃÉäÉXÉgÇí≤Ç◊ÅAç≈LJãflÇ¢ Z ç¿ïWÇ…äÓÇ√ǢǃÉ~ÉbÉvÉ}ÉbÉvÉåÉxÉãÇëIëǵNjÇ∑ÅBì¡íËÇÃÉeÉNÉXÉ`ÉÉÇ≈ï`Ç©ÇÍÇÈÉ|ÉäÉSÉìÇ™è¨Ç≥Ç≠ÅAó£ÇÍǃǢÇÈèÍçáÇÕÅAï`âÊåãâ Ç…ÇÕñ≥éãÇ≈Ç´ÇÈíˆìxÇÃâeãøÇµÇ©ó^ǶÇ∏Ç…ÅAÇÊÇËè¨Ç≥Ç»É~ÉbÉvÉ}ÉbÉvÇégópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB128x128 É~ÉbÉvÉ}ÉbÉvÇ 32x32 É~ÉbÉvÉ}ÉbÉvÇ≈íuÇ´ä∑ǶÇÈÇΔÅAVRAM ÇÃégópó ÇÕÇ®ÇÊǪ 95% è≠Ç»Ç≠Ç»ÇËÇ‹Ç∑ÅBVRAM Ç™è≠ǻǢèÍçáÇÕëÂÇ´Ç»å¯â Ç™Ç†ÇËÇ‹Ç∑ÅBÇÊÇËè¨Ç≥Ç»É~ÉbÉvÉ}ÉbÉvÇ™çÏê¨çœÇ›ÇÃèÍçáÅAÇÊÇËëÂÇ´Ç»ÉeÉNÉXÉ`ÉÉÇçÏê¨Ç∑ÇÈÇÃÇÕå„DžǵÇΩǟǧǙÇÊÇ¢Ç≈ǵÇÂǧÅB

àÍìxÇ…ÇΩÇ≠Ç≥ÇÒÇÃÉeÉNÉXÉ`ÉÉÇçÏê¨Ç∑ÇÈÇÃÇ≈ÇÕÇ»Ç≠ÅAçÏãΔÇÉAÉjÉÅÅ[ÉVÉáÉìÇÃï°êîÉtÉåÅ[ÉÄÇ…éUÇÁÇ∑ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBDZǧÇ∑ÇÈDZÇΔÇ≈ÅAëΩêîÇÃÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉfÉBÉìÉOÇ…ÇÊÇÈÉtÉåÅ[ÉÄÉåÅ[ÉgÇÃóéÇøÇå∏ÇÁǵÅAï\é¶Ç™ÉXÉÄÅ[ÉYÇ…Ç»ÇËÇ‹Ç∑ÅBó·Ç¶ÇŒÅAëΩêîÇÃÉeÉNÉXÉ`ÉÉÇóvÇ∑ÇÈóÃàÊÇ…à⁄ÇÈèÍçáÅAï°êîÉtÉåÅ[ÉÄÇ…ìnǡǃÅAǪÇÍÇÁÇÃÉeÉNÉXÉ`ÉÉÇdžÇÁÇ©Ç∂ÇfléÊìæÇµÇƒÇ®Ç´ÅAé¿ç€Ç…ï`âÊÇ≈ïKóvÇ…Ç»ÇÈéûì_Ç≈ÇÕÇ∑Ç≈Ç…ëSïîÇ™ÉÅÉÇÉäè„DždžÇÈÇÊǧDžǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇÃè¨Ç≥ÇflÇÃÉoÅ[ÉWÉáÉìÇêÊÇ…ÉçÅ[ÉhǵǃǮǴÅAëÂÇ´Ç»ÉeÉNÉXÉ`ÉÉÇljǡÇ≠ÇËéùǡǃǴNjÇ∑ÅBç≈å„Ç…ÅAÉÅÉÇÉäè„Ç…ìKêÿÇ»ÉeÉNÉXÉ`ÉÉǙǻǢèÍçáÅAç≈è¨ÇÃÉ~ÉbÉvÉ}ÉbÉvÉåÉxÉãÇ©ÇÁÉJÉâÅ[ÇéÊÇËèoǵÅAÇ©ÇÌÇËDžǪÇÍÇ≈éOäpå`Ç…ÉOÅ[ÉçÅ[ÉVÉFÅ[ÉfÉBÉìÉOÇÇ©ÇØÇÈÇΔǢǧï˚ñ@LJdžÇËÇ‹Ç∑ÅB

èdóvÇ»ê´î\å¸è„çÙÇÃÇ–ÇΔǬDžÅAåªç›ÇÃÉeÉNÉXÉ`ÉÉÇêÿÇËë÷ǶÇÈâÒêîÇå∏ÇÁÇ∑DZÇΔǙdžÇËÇ‹Ç∑ÅBÉeÉNÉXÉ`ÉÉÇÉZÉbÉgÇ∑ÇÈÇΔÅAëΩÇ≠ÇÃÉGÉìÉWÉìÇÕǪÇÃÉeÉNÉXÉ`ÉÉÇ VRAM Ç…ÉçÅ[ÉhÇ∑ÇÈǻǫÇÃèàóùÇçsǢNjÇ∑ÅBÉ\ÉtÉgÉEÉFÉAÉGÉìÉWÉìÇ≈ÇÕâΩLJǵǻÇ≠ǃLJÅAÉnÅ[ÉhÉEÉFÉAÉAÉNÉZÉâÉåÅ[É^ÇÃë§Ç≈ÉeÉNÉZÉãÉLÉÉÉbÉVÉÖÇópǢǃê´î\å¸è„Çê}ǡǃǢÇÈǩLJǵÇÍÇ‹ÇπÇÒÅBÉeÉNÉXÉ`ÉÉÇêÿÇËë÷ǶÇÈÇΔÅAÉLÉÉÉbÉVÉÖÇ™ÉtÉâÉbÉVÉÖÇ≥ÇÍǃǵNjǢNjÇ∑ÅBíPàÍÇÃÉeÉNÉXÉ`ÉÉÇ≈ëΩêîÇÃÉ|ÉäÉSÉìÇï`âÊÇ∑ÇÈÇΔê´î\Ç™å¸è„ǵNjÇ∑ÅB

çlǶï˚ÇåæÇ§ÇΔÅADZÇÍÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉfÅ[É^ÇìKêÿÇ…ï“ê¨Ç∑ÇÈDZÇΔÇ≈é¿åªÇ≈Ç´Ç‹Ç∑ÅBó·Ç¶ÇŒÅA1 å¬ÇÃÉeÉNÉXÉ`ÉÉÇÉÇÉfÉãëSëÃÇ…îÌÇπÇÈÇÊǧǻèÍçáÅAǪÇÃÉeÉNÉXÉ`ÉÉÇ…äÓÇ√Ç≠ÉIÉuÉWÉFÉNÉgÇÕàÍìxÇ…ï`âÊÇ∑ÇÈÇÊǧDžǵNjÇ∑ÅBDZǧÇ∑ÇÍÇŒÅA1 å¬ÇÃÉÇÉfÉãDžǬǴÉçÅ[ÉhÇ∑ÇÈÉeÉNÉXÉ`ÉÉÇÃêîÇ™ 1 å¬Ç…å∏ÇËÇ‹Ç∑ÅB

ÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃÇÃëOèÄîı

ÇÊÇËìOíÍǵÇΩâåàï˚ñ@ÇΔǵǃÅAQARenderStart ÇåƒÇ—èoÇ∑ëOÇ…ÅAÇ∑Ç◊ǃÇÃÉ|ÉäÉSÉìèÓïÒÇåvéZǵï€ë∂ǵǃǮÇ≠ï˚ñ@ǙdžÇËÇ‹Ç∑ÅBDZÇÃåvéZÇÕÉnÅ[ÉhÉEÉFÉAÇ™íºëOÇÃÉtÉåÅ[ÉÄÇï`âÊÇ∑ÇÈä‘Ç…çsǧDZÇΔÇ™â¬î\Ç»ÇÃÇ≈ÅAîÒìØä˙ÉnÅ[ÉhÉEÉFÉAÇ≈ÇÕÉÅÉäÉbÉgǙdžÇËÇ‹Ç∑ÅBDZÇÃèÓïÒÇ…äÓÇ√Ç´ÅAÉ|ÉäÉSÉìèÓïÒÇÉ\Å[ÉgǵǃÅADZÇÃÉVÅ[ÉìÇÃï`âÊÇ≈é¿ç€Ç…ïKóvÇ»ÉeÉNÉXÉ`ÉÉèWçáÇå©Ç¬ÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÇΩÇæÇµÅADZÇÃï˚ñ@Ç≈ÇÕÅAåvéZçœÇ›ÇÃÉ|ÉäÉSÉìÉfÅ[É^ÇÉÅÉÇÉäè„Ç…ï€éùÇµÇ»ÇØÇÍnjǻÇÁǻǢÇΔǢǧÉIÅ[ÉoÅ[ÉwÉbÉhÇ™ê∂Ç∂Ç‹Ç∑ÅB

óòópâ¬î\Ç»ÉVÅ[ÉìèÓïÒÇ©ÇÁïKóvÇ»ëSÉeÉNÉXÉ`ÉÉÇåàíËÇ∑ÇÈDZÇΔÇ™â¬î\Ç»èÍçáLJdžÇËÇ‹Ç∑ÅBDZÇÃèÍçáÅAïKóvÇ»ÉeÉNÉXÉ`ÉÉÇëSïîÉçÅ[ÉhǵÇΩå„ÅAçƒÇ—ÉäÉXÉgÇÇΩÇ«ÇËÅAÉåÉìÉ_ÉâÅ[Ç…ëóèoǵNjÇ∑ÅB

Ç¢Ç∏ÇÍÇÃï˚ñ@ÇópǢǃLJÅAåãâ ÇΔǵǃåªç›ÇÃÉeÉNÉXÉ`ÉÉÇê›íËÇ∑ÇÈÇΩÇflÇÃåƒÇ—èoǵâÒêîÇ™ç≈è¨Ç…Ç»ÇËÅAVRAM Ç÷ÇÃÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇΔÉAÉìÉçÅ[ÉhÇåJÇËï‘Ç∑DZÇΔÇ≈ê∂Ç∂ÇÈÉXÉâÉbÉVÉìÉOÇëÂïùÇ…å∏ÇÁÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBïKóvÇ»ÉeÉNÉXÉ`ÉÉÇÃÉäÉXÉgÇÇΩÇ«ÇËÅAÉGÉìÉWÉìÇ…Ç‹ÇæÉçÅ[ÉhǵǻǢLJÇÃǙdžÇÍÇŒÅAÉeÉNÉXÉ`ÉÉÇçÏê¨ÇµÇ‹Ç∑ÅBDZÇÃå„ÅAÉçÅ[ÉhçœÇ›ÇÃÉeÉNÉXÉ`ÉÉÇégǧÉ|ÉäÉSÉìÇÇ∑Ç◊ǃï`âÊǵNjÇ∑ÅBÇ≥ÇÁÇ…ï ÇÃÉeÉNÉXÉ`ÉÉÇÉçÅ[ÉhÇ∑ÇÈÇ…ÇÕÅAQASync ÇåƒÇ—èoǵÅAÇ¢Ç≠ǬǩÉeÉNÉXÉ`ÉÉÇçÌèúǵÅAï`âÊÇ∑Ç◊Ç´êVǵǢÉeÉNÉXÉ`ÉÉåQÇÉçÅ[ÉhǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇçÌèúÇ∑ÇÈéûì_Ç≈ÉGÉìÉWÉìÇ™é©ìÆìIÇ…ìØä˙ÇéÊÇÈDZÇΔÇ™ÇÌǩǡǃǢÇÈèÍçáÇÕ QASync ÇåƒÇ—èoÇ∑ïKóvÇÕÇ»Ç≠ÅAǪÇÃǟǧǙê´î\Ç™å¸è„ǵNjÇ∑ÅBÇ¢Ç∏ÇÍÇÃèÍçáÇ≈LJÅAï`âÊÇ∑Ç◊Ç´ÉeÉNÉXÉ`ÉÉǙǻÇ≠Ç»ÇÈÇ‹Ç≈ÅAÉeÉNÉXÉ`ÉÉÇÃçÏê¨ÇΔçÌèúÇåJÇËï‘ǵNjÇ∑ÅB

í èÌÉAÉãÉtÉ@ÉuÉåÉìÉhÉeÉNÉXÉ`ÉÉÇégǧÉ|ÉäÉSÉìÇÃï`âÊÇÕÅAïsìßñæÇ»éOäpå`ÇÃï`âÊÇ™Ç∑Ç◊ǃçœÇÒÇ≈Ç©ÇÁçsǢNjÇ∑ÅBÉtÉåÅ[ÉÄëSëÃÇÃï`âÊÇ™èIóπÇ∑ÇÈëOÇ…ÉAÉãÉtÉ@ÉuÉåÉìÉhÉ|ÉäÉSÉìÇ≈égǧÉeÉNÉXÉ`ÉÉÇçÌèúǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB

à»â∫Ç…ÉåÉìÉ_ÉäÉìÉOÉãÅ[ÉvÇï\Ç∑âºëzÉRÅ[ÉhÇÃífï–Çé¶ÇµÇ‹Ç∑ÅB

RenderTextures() ÇÕÅAÉçÅ[ÉhçœÇ›ÇÃÉeÉNÉXÉ`ÉÉÇÃÉäÉXÉgÇÇΩÇ«ÇËÅAǪÇÍÇÁÇÃÉeÉNÉXÉ`ÉÉÇ…ëŒâûÇ∑ÇÈÇ∑Ç◊ǃÇÃéOäpå`Çï`âÊǵNjÇ∑ÅB

LoadTextures() ÇÕÅAÉeÉNÉXÉ`ÉÉÇÃÉäÉXÉgÇÇΩÇ«ÇËÅAÇ‹Çæï`âÊÇ≥ÇÍǃǢǻǢéOäpå`Ç…ëŒâûǵÇΩÉeÉNÉXÉ`ÉÉǙdžÇÍnjǪÇÍÇÉçÅ[ÉhǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇ…é∏îsǵÇΩÇÁÅAïsóvÇ»ÉeÉNÉXÉ`ÉÉÇÇ¢Ç≠ǬǩçÌèúǵǃçƒééçsǵNjÇ∑ÅBǪÇÃÉVÅ[ÉìÇÃï`âÊÇ…Ç∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ™ïKóvÇ»èÍçáÅAÉãÅ[É`ÉìÇÕèIóπǵNjÇ∑ÅBLoadTextures() ÇÕÅAÉGÉìÉWÉìÇ…ÉçÅ[ÉhÇ≈ǴǻǩǡÇΩÉeÉNÉXÉ`ÉÉǙdžÇÈÇΔ false Çï‘ǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇçÌèúÇ≈ǴǻǢÉJÅ[ÉhÇ…ëŒâûÇ∑ÇÈÇΩÇflÅAìÒâÒë±ÇØÇƒêVǵǢÉeÉNÉXÉ`ÉÉÇ™çÏê¨Ç≈ǴǻǩǡÇΩÇÁÅAtrue Çï‘Ç≥Ç»Ç≠ǃÇÕÇ»ÇËÇ‹ÇπÇÒÅB

ÉåÉìÉ_ÉäÉìÉOÉãÅ[ÉvÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB

QASync();
done = LoadTextures();
                  
QARenderStart(...);
RenderTextures();
                  
while (!done)
{
// Loadtextures() Ç≈çÌèúÇ∑ÇÈÇΩÇflÅADZDZNjÇ≈ÇÃÉåÉìÉ_ÉäÉìÉOÇèIóπÇ≥ÇπÇÈ
 QASync();
 done = LoadTextures();
 RenderTextures();
}
                  
QARenderEnd(...);

ÉGÉìÉWÉìé©êgÇ™ìØä˙ÇéÊÇÈèÍçáÇÕ QASync Ç÷ÇÃåƒÇ—èoǵÇÕÇ∑Ç◊ǃçÌèúÇ≈Ç´Ç‹Ç∑ÅB

RAVE ÇÃÉpÉtÉHÅ[É}ÉìÉXÉ`ÉÖÅ[ÉjÉìÉO

ÉpÉtÉHÅ[É}ÉìÉXÉ`ÉÖÅ[ÉjÉìÉOÇÕDZÇà TECHNOTE ÇÃç≈ëÂÇÃè≈ì_Ç≈ǵÇΩÅBóùóRÇÕ RAVE ÇégópǵǃèëÇ©ÇÍÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÇŸÇΔÇÒÇ«ÉQÅ[ÉÄÇæÇ©ÇÁÇ≈Ç∑ÅBDZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕ RAVE ÇÃÉpÉtÉHÅ[É}ÉìÉXÇè„Ç∞ÇÈÇÃÇ…ñóßǬǢÇ≠ǬǩÇÃéñïøÇèqÇ◊Ç‹Ç∑ÅB

1) QARenderStart ÇåƒÇ—èoÇ∑ÇΔÅARAVE ÉGÉìÉWÉìÇÕ Z ÉoÉbÉtÉ@ÇÃà íuÇÇ∑Ç◊ǃ z=1.0 Ç…ÉäÉZÉbÉgǵÅAëSÉsÉNÉZÉãÇîwåiêFÇ…ê›íËǵNjÇ∑ÅBÉRÉìÉeÉLÉXÉgÇ…èâä˙âªí ímÉãÅ[É`ÉìÇ™ìoò^Ç≥ÇÍǃǢÇÈÇΔÅAîwåiêFÇÕê›íËÇ≥ÇÍÇ∏ÅAèâä˙âªÉÅÉ\ÉbÉhÇ™åƒÇ—èoÇ≥ÇÍÇ‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ïKÇ∏ñàÉtÉåÅ[ÉÄÇÃÉoÉbÉtÉ@ëSëÃÇï`âÊÇ∑ÇÈèÍçáÇÕÅAâΩLJǵǻǢä÷êîÇèâä˙âªéËë±Ç´ÇΔǵǃìoò^Ç∑ÇÈDZÇΔÇ≈ÅAêîÉTÉCÉNÉãêflñÒÇ≈Ç´Ç‹Ç∑ÅB

2) Ç«ÇÒÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈LJëSÇ≠ïœâªÇµÇ»Ç¢ê√ìIÇ»ÉfÅ[É^ÇéùǡǃǢÇÈÇÕÇ∏Ç≈Ç∑ÅBÉGÉìÉWÉìÇ™ï`âÊÉLÉÉÉbÉVÉÖÇÉTÉ|Å[ÉgÇ∑ÇÈèÍçáÅAê√ìIÉfÅ[É^ÇëSïîÉLÉÉÉbÉVÉÖÇ…ï`Ç´ÅADZÇÍÇ≈äeÉtÉåÅ[ÉÄÇèâä˙âªÇµÇ‹Ç∑ÅBÉLÉÉÉbÉVÉÖÇÕí«â¡Çà VRAM ÇégǧǩLJǵÇÍÇ‹ÇπÇÒÇ™ÅAÉGÉìÉWÉìÇÕëÂó ÇÃÉCÉÅÅ[ÉWÇΔ Z ÉoÉbÉtÉ@èÓïÒÇçÇë¨Ç…èâä˙âªÇ≈Ç´Ç‹Ç∑ÅBÉLÉÉÉbÉVÉÖÇÃégópÇÕçÇë¨Ç» Z ÉeÉXÉgã@î\ÇÉTÉ|Å[ÉgÇ∑ÇÈÉnÅ[ÉhÉEÉFÉAÇ≈ÇÕó«Ç¢ëIëÇ≈Ç∑Ç™ÅAVRAM Ç™ë´ÇËǻǢèÍçáÇÕïsìKêÿÇ≈Ç∑ÅBÉLÉÉÉbÉVÉÖÇÃï`âÊÇ≈égópǵÇΩÉeÉNÉXÉ`ÉÉÇÕÉÅÉCÉìÇÃÉOÉâÉtÉBÉbÉNÉXÉãÅ[ÉvÇ≈ÇÕÉçÅ[ÉhÇ≥ÇÍǻǢÇΩÇflÅADZÇÃÉÅÉÇÉäÇÕâÒïúÇ≈Ç´Ç‹Ç∑ÅB

3) ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉ|ÉäÉSÉìÇ™Ç∑Ç≈Ç…âúÇ©ÇÁÇÃê[Ç≥DžǵÇΩǙǡǃÉ\Å[ÉgçœÇ›ÇÃèÍçáÇÕÅAZ ÉoÉbÉtÉ@ǻǵÇÃÉRÉìÉeÉLÉXÉgÇçÏê¨ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅBDZÇÍÇ…ÇÊÇËÉeÉNÉXÉ`ÉÉópÇ…í«â¡Çà VRAM Ç™égópÇ≈Ç´ÇÈÇÊǧDžǻÇËÅAïsóvÇ» Z ÉoÉbÉtÉ@èÓïÒÇÃèëÇ´çûǛDžîÔÇ‚Ç≥ÇÍÇÈéûä‘Ç™êflñÒÇ≥ÇÍÇ‹Ç∑ÅB

É|ÉäÉSÉìÇÃàÍïîÇ™É\Å[ÉgçœÇ›ÇÃèÍçáÅAZ ÉâÉCÉgÇ‹ÇΩÇÕ Z ÉeÉXÉgÇÃÇ¢Ç∏ÇÍǩǙÇÊÇËå¯ó¶ìIǩǫǧǩÇí≤Ç◊ǃÇ≠ÇæÇ≥Ç¢ÅBZ ÉâÉCÉgÇÃǟǧǙå¯ó¶Ç™ó«ÇØÇÍÇŒÅAkQATag_ZFunction É^ÉOÇ kQAZFunction_True Ç…ïœÇ¶ÇƒÅAÉ\Å[ÉgçœÇ›ÇÃÉ|ÉäÉSÉìÇÇ∑Ç◊ǃâúÇ©ÇÁéËëOÇ…å¸Ç©Ç¡Çƒï`âÊǵǃÇ≠ÇæÇ≥Ç¢ÅBǪÇÃå„í èÌÇÃê›íËÇ…ñflǵÅAécÇËÇÃÉ|ÉäÉSÉìÇï`âÊǵǃÇ≠ÇæÇ≥Ç¢ÅBZ ÉeÉXÉgÇÃǟǧǙë¨ÇØÇÍÇŒÅAkQATag_ZFunction É^ÉOÇÕǪÇÃNjNjDžǵǃÅAÇ‹Ç∏É\Å[ÉgçœÇ›ÇÃÉ|ÉäÉSÉìÇéËëOÇ©ÇÁâúÇ÷ï`âÊÇµÇƒÇæÇ≥Ç¢ÅB

4) RAVE ÉCÉÅÅ[ÉWè„Ç…å„Ç≈çáê¨Ç™ïKóvÇ»èÍçáÅAǪÇÍÇÇ∑Ç◊ǃÉrÉbÉgÉ}ÉbÉvÇ…ï`âÊǵǃÅAQADrawBitMap Ç≈ÉRÉsÅ[ǵǃǛǃÇ≠ÇæÇ≥Ç¢ÅBç≈èIìIÇ»çáê¨ÇÕÉnÅ[ÉhÉEÉFÉAÇ≈çsÇÌÇÍÇÈÇΩÇflÅAïWèÄÉOÉâÉtÉBÉbÉNÉXÉãÅ[É`ÉìÇ≈ÉrÉbÉgÉ}ÉbÉvÇï`âÊÇ∑ÇÈDZÇΔÇ™â¬î\Ç…Ç»ÇËÇ‹Ç∑ÅB

5) ÉeÉNÉXÉ`ÉÉÇÃêÿÇËë÷ǶÇç≈è¨Ç…Ç∑ÇÈÇÊǧÉfÅ[É^Çï“ê¨ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅBëSÉtÉåÅ[ÉÄÇ≈égópÇ≥ÇÍÇÈÉeÉNÉXÉ`ÉÉÇÕÉçÉbÉNÉtÉâÉOÇê›íËǵǃÇ≠ÇæÇ≥Ç¢ÅBÉfÅ[É^ÇÕÉXÉgÉäÉbÉvÇ‚ÉtÉ@ÉìÇópǢǃíPàÍÇÃÉeÉNÉXÉ`ÉÉÇ≈ï`âÊǵǃÅAÉnÅ[ÉhÉEÉFÉAÉAÉNÉZÉâÉåÅ[É^ÇΔÇÃä‘Ç≈ïKóvÇΔÇ»ÇÈÉoÉìÉhïùÇå∏ÇÁǵǃÇ≠ÇæÇ≥Ç¢ÅBÉXÉgÉäÉbÉvÇ™égǶǻǢèÍçáÇÕÅAéOäpå`ÇÃèWÇ‹ÇËÇàÍìxÇ…ëSïî kQAVertexMode_Tri ÉtÉâÉOÇégǡǃëóèoǵǃÇ≠ÇæÇ≥Ç¢ÅB

6) îÒìØä˙ÉnÅ[ÉhÉEÉFÉAÇäàópÇ≈Ç´ÇÈÇÊǧÉGÉìÉWÉìÇê›åvǵǃÇ≠ÇæÇ≥Ç¢ÅBQARenderEnd ÇåƒÇ—èoǵÇΩÇÁÅAÇ∑ÇÆÇ…ÉAÉjÉÅÅ[ÉVÉáÉìÇÃéüÇÃÉtÉåÅ[ÉÄÇÃåvéZÇäJénǵǃÇ≠ÇæÇ≥Ç¢ÅBRAVE ÇÃåªçsÉoÅ[ÉWÉáÉìÇÕ QARenderEnd ÇÃíÜÇ≈ìØä˙ÇéÊÇËÇ‹Ç∑Ç™ÅAè´óàÇà RAVE ÉoÅ[ÉWÉáÉìÇΔëΩÇ≠Çà RAVE ÉGÉìÉWÉìÇ≈ÇÕÅAÉnÅ[ÉhÉEÉFÉAÇ…ÇÊÇÈÉåÉìÉ_ÉäÉìÉOÇΔ 3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃèàóùÇÉIÅ[ÉoÅ[ÉâÉbÉvÇ≥ÇπÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇÊǧDžǻÇÈÇ≈ǵÇÂǧÅB

RAVE ÇÕåªç›É}ÉãÉ`ÉvÉçÉZÉT API ÇÉTÉ|Å[ÉgǵNjÇπÇÒÇ™ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈DZÇÍÇópÇ¢ÇÈDZÇΔÇÕÇ≈Ç´Ç‹Ç∑ÅBÇ∑Ç◊ǃÇà RAVE Ç÷ÇÃåƒÇ—èoǵÇÕÉÅÉCÉìÉXÉåÉbÉhÇ©ÇÁçsǧïKóvǙdžÇËÇ‹Ç∑Ç™ÅAÉWÉIÉÅÉgÉäÇÃåvéZÇÕ MP É^ÉXÉNì‡Ç≈é¿çsÇ≈Ç´Ç‹Ç∑ÅBÉVÉìÉOÉãÉvÉçÉZÉTÉVÉXÉeÉÄÇ≈džǡǃLJÅAÉÅÉCÉìÉ^ÉXÉNÇ™ QASync ì‡Ç≈ÉuÉçÉbÉNǵǃǢÇÈä‘ÅAÉGÉìÉWÉìÇ…ÇÕé¿çséûä‘Ç™ó^ǶÇÁÇÍÇ‹Ç∑ÅB

éQçlï∂å£
RAVE ÇÃÉhÉLÉÖÉÅÉìÉgÇ…ÇÕ 3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃç\ízÇ…ä÷Ç∑ÇÈÇ∑ÇŒÇÁǵǢï∂å£Ç™è–âÓÇ≥ÇÍǃǢNjÇ∑ÅBDZDZÇ≈ÇÕÅAì¡Ç… 3D ÉQÅ[ÉÄÇÃê›åvÇ…ä÷Ç∑ÇÈèëê–Çè–âÓǵNjÇ∑ÅB

Zen of Graphics Programming, Michael Abrash, ISBN: 1883577896
Black Art of Game Programming, Andre Lamothe, ISBN: 1571690042
Black Art of Macintosh Game Programming, Kevin Tieskoetter, ISBN: 157169059


Ç≥ÇÁÇ…ÅAÅuGame Developer MagazineÅvÇ…ÇÕÅA3D ÉAÉNÉZÉâÉåÅ[É^ÅAÉGÉìÉWÉìÇÃê›åvÅAÉeÉNÉXÉ`ÉÉä«óùÇ…ä÷Ç∑ÇÈÇ∑ÇŒÇÁǵǢãLéñÇ™åfç⁄Ç≥ÇÍǃǢNjÇ∑ÅB